Criei um script em lote configurado para copiar todos .cpp
os arquivos de um local que defini. Ele pode copiar os arquivosemantém a estrutura de pastas, mas não está expandindo os nomes dos arquivos copiados corretamente. Eu também tenho uma versão mais antiga que é capaz de fazer isso, mas também copiatudoda pasta de destino para a nova pasta. O objetivo da nova versão éapenascopie um tipo de arquivo específico.
Aqui está a sintaxe XCOPY
que expande corretamente os nomes dos arquivos, mas copia todo o conteúdo da pasta:
ECHO D | XCOPY "%USERPROFILE%\Documents\Visual Studio 2017\Projects" "Backup\Projects" /S /Q /N
Aqui está a nova sintaxe que não consegue expandir os nomes dos tipos de arquivos copiados:
ECHO F | XCOPY "%USERPROFILE%\Documents\Visual Studio 2017\Projects\*.cpp" "Backup\Projects\" /S /Q /N
Aqui está um exemplo dos nomes de arquivos abreviados/não expandidos que recebo no diretório de destino:
WRNM~1.CPP
.
Não sei se o comando de substituição do prompt muda( /S /Q /N
)estão afetando isso, mas preciso que os prompts sejam substituídos por eles devido ao grande número de arquivos que estão sendo copiados. Também gostaria de observar que, apesar de copiar arquivos com a sintaxe mais recente, ainda posso XCOPY
copiá-los mesmo se definir o destino como um diretório usando a D
opção.
Responder1
Encontrei a solução que atende a todos os meus requisitos usando ROBOCOPY
:
ROBOCOPY "%USERPROFILE%\Documents\Visual Studio 2017\Projects" "Backup\Projects" *.cpp /S
Você pode anexar a /E
opção para copiar também pastas vazias, se necessário. Eu tentei isso antes, mas perdi a definição do tipo de arquivo.
Documentação adicional ROBOCOPY
deSS64:
Responder2
xcopy em documentos da Microsoft
Cria cópias usando nomes curtos de arquivos ou diretórios NTFS. /n é necessário quando você copia arquivos ou diretórios de um volume NTFS para um volume FAT ou quando a convenção de nomenclatura do sistema de arquivos FAT (ou seja, 8,3 caracteres) é necessária no sistema de arquivos de destino. O sistema de arquivos de destino pode ser FAT ou NTFS.
Sua versão mais antiga do xcopy não funcionou /n
corretamente. Verifique xcopy /?
com cada um para verificar sempre que a opção mudou de significado.