Script para mover arquivos que correspondem a parte do nome de outros arquivos

Script para mover arquivos que correspondem a parte do nome de outros arquivos

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
  • Se

  • 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
    
  • XCopiar

  • Redirecionamento

informação relacionada