Estou escrevendo um programa geral de backup de arquivos. Ele procura na unidade arquivos que correspondem a um conjunto de tipos e os grava em uma pasta na área de trabalho. Eu o escrevi usando o xcopy
Windows XP, mas ao saber que xcopy
foi preterido em favor do robocopy
Vista e mais recente, ainda querendo manter a compatibilidade, decidi mudar para os não preteridos copy
.
É aqui que os problemas começam. Estou tentando consertar a rotina de cópia. Eu pensei que tinha tudo resolvido, mas não copia nada. Minha saída é zero arquivos copiados para cada iteração.
Código original usando xcopy
:
for /r %%a in (*.bmp *.dds *.gif *.jpg *.jpeg *.png *.psd *.pspimage *.tga *.thm *.tif *.tiff) do (
echo f | xcopy "%%a" "%HOMEDRIVE%%HOMEPATH%\Desktop\LDR\Images\Bitmap\%%~nxa" /q /y /g /c
)
Código (quebrado) revisado usando copy
:
for /r %%a in (*.bmp *.dds *.gif *.jpg *.jpeg *.png *.psd *.pspimage *.tga *.thm *.tif *.tiff) do (
copy "%%a" "%HOMEDRIVE%%HOMEPATH%\Desktop\LDR\Images\Bitmap\%%~nxa" /d /y /z
)
Saída:
The system cannot find the path specified.
0 files copied.
Eu sei que parece que todo mundo usa um xcopy
ou mais, robocopy
mas alguém pode ajudar copy
?
Nota: Estou usando o Lote para mantê-lo muito leve e acessível pela linha de comando.
D:\>(copy "D:\Program Files\Winamp\Plugins\avs\whacko6-07.bmp" "C:\Documents and Settings\,,,,\Desktop\LDR\Images\Bitmap\whacko6-07.bmp" /d /y /z ) The system cannot find the path specified. 0 file(s) copied.
Uma amostra em um test drive D. Os resultados foram todos iguais.
copy
não cria caminhos de arquivos e, portanto, não conseguiu copiar para um caminho que xcopy
teria criado para mim. Eu vou ter que pré-criar meus diretórios, eu acho.
@for
e aqui,do @(
que deve listar todos os comandos e você pode ver qualquer falha. Percebo também que estão faltando aspas duplas no seu comando de cópia. Você teve-os em seu comando xcopy