CMD MOVE não pode substituir diretórios no WIN 7 [duplicado]

1

O comando MOVE não funciona quando ovewrite um diretório. Eu também tentei executar cmd com direitos de administrador. Estou postando esta pergunta com mais informações para que você possa testar facilmente.

Faça sua própria pasta em algum lugar e abra a janela de comando nesse local. Copie e cole este bloco na janela cmd para criar a estrutura de teste

MD aaa\test\a
MD aaa\test\b
MD bbb\test\b
MD bbb\test\c
MD ccc\test\a
MD ccc\test\c
ECHO hello > aaa\test\a\a.txt
ECHO hello > aaa\test\b\b.txt
ECHO hello > bbb\test\b\b.txt
ECHO hello > bbb\test\c\c.txt
ECHO hello > ccc\test\a\a.txt
ECHO hello > ccc\test\c\c.txt

Agora eu quero mover e mesclar todas as pastas "test" em ". \ test"
O comando MOVE está bom, mas no win 7 ele falha (Access Denied) quando sobrescrevendo "pastas" existentes. Se você tentar seguir o bloco um por um, o primeiro será ok, mas o próximo falhará.

move /Y aaa\test .\
move /Y bbb\test .\
move /Y ccc\test .\

No entanto, encontrei outras soluções que fazem o mesmo.

XCOPY aaa\test test\ /E/Y
XCOPY bbb\test test\ /E/Y
XCOPY ccc\test test\ /E/Y
RD aaa\test /Q/S
RD bbb\test /Q/S
RD ccc\test /Q/S

XCOPY e depois remover o diretório

ROBOCOPY aaa\test test\ /E /IS /MOVE

ROBOCOPY com a opção / Mover

COPY command is totally useless in this case...



Eu realmente preciso do comando MOVE para obter um arquivo de lote com este contett para o trabalho que funcionou no XP.

move /y "%1" c:\mydir\

Eu tentei robocopy, mas depois ele irá mover apenas o conteúdo da pasta. não a pasta completamente.

robocopy "%1" c:\mydir /E /IS /MOVE

Se você quiser me ajudar, então você pode fazer isso de duas maneiras.
1) Encontre uma solução para fazer com que o MOVE funcione como no XP
2) Encontre uma maneira de fazer o mesmo que move / y "% 1" c: \ mydir \ faz


Uma sugestão poderia ser pegar o nome da pasta do caminho e fazer algo assim

// %1 = "c:\anotherdir\cool"

if %1 is path_to_a_folder then (
   get %foldername of %1
   robocopy "%1" c:\mydir\%foldername /E /IS /MOVE
) else move /y "%1" c:\mydir\


EDITAR: Ei, isso funciona bem para diretórios, o que mais eu posso fazer para que o script também possa trabalhar com arquivos?

robocopy %1 "C:\Users\azizkar\Desktop\ebben\%~n1" /E /IS /MOVE
    
por Aziz 23.09.2011 / 13:58

2 respostas

1

Finalmente .. aqui está a solução .. Obrigado pela ajuda galera:)

SET mydir=C:\mydir
IF EXIST "%mydir%\%~n1\" (
  ROBOCOPY %1 "%mydir%\%~n1" /E /IS /MOVE
) ELSE (
  MOVE /Y %1 "%mydir%\"
)
    
por 27.09.2011 / 12:36
0

XXCopy seria minha recomendação.

A versatile file copy utilitiy.

enter image description here

    
por 24.09.2011 / 03:30