와일드카드가 있는 디렉터리에서 와일드카드가 있는 파일 복사

와일드카드가 있는 디렉터리에서 와일드카드가 있는 파일 복사

이름에 지정된 루트가 있지만 접미사가 있을 수 있는 디렉터리에서 다양한 이름과 확장자를 가진 파일을 다른 디렉터리로 복사하고 싶습니다.

for-loop는 디렉토리 와일드카드에 대해 작동하는 것처럼 보이지만 파일 이름에 대한 와일드카드를 제외하는 것 같습니다. 배치 파일에 있는 내용은 다음과 같습니다.

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이보다 더 좋은 방법은 생각할 수 없습니다.

관련 정보