Eu tenho um script de linha única que copia todos os arquivos ".ext1" da pasta atual para a pasta de destino de forma recursiva:
xcopy *.ext1 D:\dest /s /d /y
Funciona perfeitamente.
Agora eu quero copiar todos os * .ext2 também. Em vez de copiar e colar (funciona bem):
xcopy *.ext1 D:\dest /s /d /y
xcopy *.ext2 D:\dest /s /d /y
Eu quero usar um for
comando:
for %%f in (*.ext1 *.ext2) do xcopy %%f D:\dest /s /d /y
mas não funciona:
- Não copia subdiretórios da pasta de origem
- Não copia arquivos com nomes com espaços como "read me.ext1"
Eu tentei usar um /R
chave:
for /R %%f in (*.ext1 *.ext2) do xcopy %%f D:\dest /s /d /y
mas isso resultou em copiar os arquivos de origem do subdiretório na pasta raiz de dest. E nomes com espaços não foram.
Qual é a forma correta do for
comando seria?
batch-file
xcopy
Nick
fonte
fonte
...xcopy "%%f%" ...
Respostas:
tente isso:
fonte
Tanto quanto eu posso dizer sua única opção é para chamar xcopy várias vezes. Se você quiser ter algum tipo de reutilização de código, vejo duas opções:
Defina os parâmetros como variáveis e use-os:
ou crie um subprograma para fazer a cópia:
fonte
Você não pode incluir curingas de forma regular
for
porque eles sempre serão expandidos (ou ignorados se não houver correspondência). Se a resposta da Endoro não funcionar, você pode ler a lista de curingas de um arquivo ou a saída de um comando. Exemplo:fonte