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.
fonte
@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 xcopyD:\>(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 quexcopy
teria criado para mim. Eu vou ter que pré-criar meus diretórios, eu acho.Respostas:
Solução finalmente encontrada!
Aparentemente,
xcopy
cria diretórios se eles não forem especificados. Eu ainda não tinha o\LDR\Images\Bitmap
caminho definido.copy
não sabe como criar pastas, então terei que gerá-las antecipadamente, o que é um pouco chato, porque comxcopy
isso não seria possível criar pastas quando não havia arquivos para colocar nelas. Comcopy
eu estou criando pastas, assumindo que elas serão preenchidas.Obrigado pela ajuda. PARA O REGISTRO:
copy
não cria caminhos de arquivo inexistentes.xcopy
faz!ATUALIZAÇÃO: Minha solução final. Funciona como um campeão.
fonte