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
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
- Redirección