Como obtenho a robocopy para usar um arquivo de log que inclui espaços?

11

Estou tentando o seguinte comando:

robocopy "x:\dir" "y:\dir" /mir /z /tee /fft /nfl /ndl /eta /log:"x:\path to logs\12-15-11 01 file with spaces.txt"

Estou recebendo este erro:

ERROR : Invalid Parameter #10 : "/log:x:\path to logs\12-15-11 01 file with spaces.txt"

EDIT # 1

Acontece que o comando acima era válido, eu tive um erro de digitação no meu caminho. Se você possui um caminho que inclui espaços, pode fornecê-los à opção / log do robocopy da seguinte maneira:/log:"c:\path to a file\robocopy.log"

slm
fonte
Funciona para mim. Talvez isso mostre um erro mais detalhado no topo?
Carko
Você está executando esse comando no contexto de um script em vez de diretamente na linha de comando. Talvez algo mais esteja adicionando algum tipo de fuga?
precisa
A mensagem de erro sugere que as aspas iniciais são antes e depois dos dois pontos; Tem certeza de que o comando que você estava tentando executar é o mostrado?
Harry Johnston
Sinto muito, tive um erro de digitação no caminho. Principalmente envergonhado. Obrigado pela pronta ajuda de todos! Qual é o procedimento, devo excluir esta pergunta? Ou posso reformulá-lo e adicionar uma resposta mostrando que você pode colocar aspas ao redor do argumento na opção / log da robocopy?
Slm
Não há razão para excluir @slm. Se um dos comentários acima o ajudou a encontrar o problema, peça que eles o publiquem como resposta e marque a resposta correta. Se o problema for algo totalmente diferente, escreva sua própria resposta e marque-a como a resposta para que futuros pesquisadores saibam para verificar se eles têm um problema semelhante.
Music2myear

Respostas:

11

Se você precisar fornecer um caminho que inclua espaços para a opção / log do robocopy, faça-o da seguinte maneira:

/log:"c:\path to logs files\some log file.txt"
slm
fonte
Eu recebo o erro inválido: parâmetro # 11 "/ log". Eu o adicionei ao final de um comando que estava funcionando.
Andrew S
Não trabalho mais onde suporte janelas, portanto não tenho como testar isso.
Slm
Verifique se o diretório pai do arquivo de log existe. O Robocopy não o criou e, infelizmente, reclama do parâmetro cmdline se o dir não existir.
mojo
4

Existem quatro maneiras de registrar como a documentação do Powershell

/log:<LogFile> : Grava a saída de status no arquivo de log (substitui o arquivo de log existente).

  • por exemplo: robocopy "c:\a" "c:\b" /log:"c:\copy_log.log"

/log+:<LogFile> : Grava a saída de status no arquivo de log (anexa a saída ao arquivo de log existente).

  • por exemplo: robocopy "c:\a" "c:\b" /log+:"c:\copy_log.log"

/unilog:<LogFile> : Grava a saída de status no arquivo de log como texto Unicode (substitui o arquivo de log existente).

  • por exemplo: robocopy "c:\a" "c:\b" /unilog:"c:\copy_log.log"

/unilog+:<LogFile> : Grava a saída de status no arquivo de log como texto Unicode (anexa a saída ao arquivo de log existente).

  • por exemplo: robocopy "c:\a" "c:\b" /unilog+:"c:\copy_log.log"

Para mais detalhes https://technet.microsoft.com/en-us/library/cc733145(v=ws.11).aspx

Nayana Adassuriya
fonte
Também recomendarei adicionar a /teeopção, pois isso também produzirá a saída da linha de comando e permitirá que o usuário veja também o progresso da cópia de arquivos na linha de comando.
precisa saber é o seguinte
1

Isso acontece quando você precisa de privilégios de administrador / ou pop para criar um arquivo nesse diretório

Portanto, tente ter um diretório log / temp e tente adicionar o arquivo de log nesse diretório

$ mkdir C:\log

por exemplo:

$ robocopy "c:\a" "c:\b" /log:"c:\log\copy_log.log"
jaismeensandhu
fonte
0

Se o caminho para o arquivo de log contiver espaços ou outros delimitadores de script, inclua-o entre aspas , como sua EDIT # 1 e @slm sugerem. Além disso, observe o uso de caracteres de escape, conforme descrito nesta documentação sobre scripts em lote .

Alain
fonte
Estou tendo o mesmo problema após uma migração Win 10 bastante desastrosa e indesejada.
Marc