Script para mover archivos que coincidan con parte del nombre de otros archivos

Script para mover archivos que coincidan con parte del nombre de otros archivos

Estoy tratando de descubrir cómo escribir un script que admita archivos como este:

img123
img123back
img124
img125
img125back
img126
img127

Necesito mover todos los archivos que tienen el mismo número que los archivos con la palabra "atrás" a una carpeta separada. Ejemplo de resultados:

img123
img123back
img125
img125back

Respuesta1

Puedes usar unpara /fpara iterar la salida deldirectoriocomando contra el directorio de origen. Puedes usar algún condicional.silógica y sustituciones de variables de bucle for para confirmar que los archivos con la cadena única "atrás" existen y, si es así, copie ese archivo y el archivo con el mismo nombre menos la cadena en consecuencia.

@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 adicionales

  • Para /F
  • Directorio
  • Si

  • Sustituciones por lotes (PARA /?)

    Además, se ha mejorado la sustitución de referencias variables FOR. Ahora puede utilizar la siguiente sintaxis 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

  • Redirección

información relacionada