Estou tentando descobrir como escrever um script que aceite arquivos como este:
img123
img123back
img124
img125
img125back
img126
img127
Preciso mover todos os arquivos que possuem o mesmo número dos arquivos com a palavra “voltar” para uma pasta separada. Exemplo de resultados:
img123
img123back
img125
img125back
Responder1
Você pode usar umpara /fpara iterar a saída dodiretóriocomando no diretório de origem. Você pode usar alguma condicionalselógica e substituições de variáveis de loop for para confirmar se os arquivos com a string única "back" existem e, se existirem, você copia esse arquivo e o arquivo com o mesmo nome menos a string de acordo.
@ECHO ON
SET "srcPath=C:\Source\Path"
SET "destPath=C:\Copy\Path"
SET "keyword=back"
FOR /F "TOKENS=*" %%A IN ('DIR /B /A-D "%srcPath%\*"') DO (
IF EXIST "%%~DPA%%~NA%keyword%%%~XA" XCOPY /Y /F "%%~DPA%%~NA%keyword%%%~XA" "%destPath%\" & XCOPY /Y /F "%%~FNXA" "%destPath%\"
)
PAUSE
EXIT
Recursos adicionais
- Para /F
- Dir
Substituições de lote (PARA /?)
Além disso, a substituição de referências de variáveis FOR foi aprimorada. Agora você pode usar a seguinte sintaxe opcional:
%~I - expands %I removing any surrounding quotes (") %~fI - expands %I to a fully qualified path name %~dI - expands %I to a drive letter only %~pI - expands %I to a path only %~nI - expands %I to a file name only %~xI - expands %I to a file extension only
- Redirecionamento