将带有通配符的文件从具有通配符的目录复制到具有通配符的目录

将带有通配符的文件从具有通配符的目录复制到具有通配符的目录

我想将具有各种名称和扩展名的文件从名称具有给定根但可能有后缀的目录复制到不同的目录。

for 循环似乎适用于目录通配符,但似乎排除了文件名的通配符。这是我在批处理文件中的内容:

SET /P M= ENTER THE TEST #
MKDIR "S:\Photometric\Experimental\E%M%"
COPY "S:\Photometric\Approved\%M%*\*.*" "S:\Photometric\Experimental\E%M%*"

任何帮助是极大的赞赏。

答案1

尝试这个:

@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

这将搜索并复制与source_dir匹配的每个文件夹的每个文件和子文件夹。%M%target_dir

这可能不是实现此目的的最有效方法,但由于/XD选项ROBOCOPY不能使用通配符,所以我想不出更好的方法。

相关内容