Arquivo em lote, copie os arquivos que começam com (A, B, C, D, E)

1

Em vez de executar xcopy 6 vezes, existe uma maneira de definir uma matriz de arquivos para copiar?

xcopy \\from_location\(A,B,C,D,E)*.txt \\to_location\

    
por SUpermammal 11.03.2014 / 19:37

3 respostas

1

Não apenas com o XCOPY. Mas uma instrução FOR simples pode ajudar:

for %A in (A B C D E) do xcopy "fromPath\%A*.txt"  "toPath"
    
por 12.03.2014 / 01:49
0

Não tenho certeza de nenhuma maneira nativa de fazer isso, mas você pode ver this post para informações sobre uma GUI e ferramenta de linha de comando que tem sobre todos os meios concebíveis para renomear arquivos com padrões.

Se você usar a versão de linha de comando dessa ferramenta e adicioná-la ao seu PATH , poderá usá-la em um arquivo de lote.

    
por 11.03.2014 / 20:18
0

O link do MaQleod fornece uma resposta do Powershell, mas se você estiver interessado em uma resposta de script em lote, veja uma maneira de fazer isso:

@echo off
set __fileset.1=a*.txt
set __fileset.2=b*.txt
set __fileset.3=c*.txt
set __fileset.4=d*.txt
set __fileset.5=e*.txt

for /f "tokens=2* delims=.=" %%g in ('SET __fileset.') do call :CopySet "%%h"
goto :exit

:CopySet
echo xcopy "%~dpxn1" "\to_location\." /v
goto :eof

:exit

Usando as variáveis de ambiente __fileset. , você está criando um pseudo array em um arquivo em lotes. Em seguida, você usa o for loop para percorrer todos os valores disponíveis e chama o sub CopySet para executar o comando de cópia real. Claro, o script pode ser aprimorado, mas isso é apenas um exemplo de como fazer isso.

Certifique-se de que a última linha no script em lote esteja vazia, como é usado pelo comando goto :eof para finalizar o sub e retornar à linha de chamada anterior.

    
por 11.03.2014 / 21:30