將帶有通配符的檔案從帶有通配符的目錄複製到帶有通配符的目錄

將帶有通配符的檔案從帶有通配符的目錄複製到帶有通配符的目錄

我想將具有各種名稱和擴展名的檔案從名稱具有給定根但可能具有後綴的目錄複製到不同的目錄。

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不適用於通配符,我想不出更好的方法。

相關內容