
Quero usar o robocopy para mover um grande número de arquivos, exceto aqueles que estão na lista de permissões. A lista branca contém aproximadamente 150 arquivos com nomes diferentes. Quando copio e colo os nomes de arquivos da lista de permissões na linha de comando (usando o /xf
parâmetro), o robocopy trunca a lista.
c:\test> robocopy src dest *.ext /xf exclude1.ext exclude2.ext exclude3.ext ... exclude 299.ext exclude300.ext
Resulta em:
-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-------------------------------------------------------------------------------
Started : Fri May 24 14:09:31 2013
Source : C:\test\src\
Dest : C:\test\dest\
Files : *.ext
Exc Files : exclude1.ext
exclude2.ext
exclude3.ext
....
....
exclude200.ext
exclude201.ext
exclu
e então:
'exclude250.ext' is not recognized as an internal or external command,
operable program or batch file.
'exclude251.ext' is not recognized as an internal or external command,
operable program or batch file.
'exclude252.ext' is not recognized as an internal or external command,
operable program or batch file.
'exclude253.ext' is not recognized as an internal or external command,
operable program or batch file.
Infelizmente, os arquivos da lista de permissões são escolhidos a dedo e não podem ser filtrados por caracteres curinga.
Existe alguma forma de contornar isto?
Responder1
Há um limite no comprimento da linha de comando (acho que é algo em torno de 2.048 caracteres) no Windows.
Você deve gerar um arquivo de trabalho com um pequeno subconjunto da lista de exclusão especificada (usando o /save:filename
argumento) para obter a sintaxe, editar o arquivo para incluir a lista completa e, em seguida, usar o /job:filename
argumento para executá-lo.
Para referência, a documentação desta ferramenta pode ser encontrada aqui.
Responder2
Acontece que a sintaxe do arquivo de trabalho robocopy não é tão complicada.
Para sua situação específica, você pode conseguir o que deseja criando um arquivo de trabalho robocopy com o seguinte conteúdo:
/XD
exclude1.ext
exclude2.ext
exclude3.ext
....
Se você quiser fazer o mesmo com os arquivos, seu arquivo de trabalho robocopy ficaria assim:
/XD
exclude1.ext
exclude2.ext
exclude3.ext
....
/XF
file1.ext
file2.ext
file3.ext
....
Usando a mesma lógica você pode mover quaisquer outras opções da linha de comando para o arquivo de trabalho.
Responder3
tente usar curingas após /XF filename1*.ext filename2*.ext filename3*.ext Isso só funcionará se você souber que o nome do arquivo é exclusivo em toda a estrutura. Você pode alterar a convenção de nomenclatura dos arquivos que deseja excluir para contornar essa limitação.