ワイルドカードを含むファイルをワイルドカードを含むディレクトリからコピーする

ワイルドカードを含むファイルをワイルドカードを含むディレクトリからコピーする

名前に特定のルートがあり、サフィックスが付いている可能性のあるディレクトリから、さまざまな名前と拡張子を持つファイルを別のディレクトリにコピーしたいと考えています。

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ワイルドカードでは機能しないため、これより良い方法は思いつきませんでした。

関連情報