Quiero copiar archivos con varios nombres y extensiones, desde un directorio cuyo nombre tiene una raíz determinada pero puede tener un sufijo, a un directorio diferente.
Un bucle for parece funcionar para el comodín del directorio, pero parece impedir un comodín para el nombre del archivo. Esto es lo que tengo en el archivo por lotes:
SET /P M= ENTER THE TEST #
MKDIR "S:\Photometric\Experimental\E%M%"
COPY "S:\Photometric\Approved\%M%*\*.*" "S:\Photometric\Experimental\E%M%*"
Cualquier ayuda es muy apreciada.
Respuesta1
Prueba esto:
@ECHO OFF
SETLOCAL EnableDelayedExpansion
SET source_dir=S:\Photometric\Approved
SET target_dir=S:\Photometric\Experimental\E
SET /P M= ENTER THE TEST #
FOR /D /R %%G IN ("%source_dir%") DO (
SET "folder_name=%%G"
ECHO !folder_name! | FINDSTR /R "%M%" >nul && CALL :get_folder_name
ECHO !folder_name! | FINDSTR /B /R "%M%" >nul && ROBOCOPY "%source_dir%\!folder_name!" "%target_dir%\!folder_name!" /S
)
ECHO. & ECHO. & ECHO. & ECHO. & ECHO. & ECHO Done^^!
PAUSE
EXIT
:get_folder_name
SET folder_name=!folder_name:*\%M%=%M%!
SET endbit=!folder_name:*\=!
SET folder_name=!folder_name:%endbit%=!
SET folder_name=!folder_name:~0,-1!
EXIT /B
Esto buscará source_dir
y copiará todos los archivos y subcarpetas de cada carpeta que coincidan %M%
con el archivo target_dir
.
Probablemente esta no sea la forma más efectiva de lograrlo, pero como la /XD
opción ROBOCOPY
no funciona con comodines, no se me ocurre nada mejor.