이름을 기준으로 파일을 폴더로 어떻게 이동할 수 있나요?

이름을 기준으로 파일을 폴더로 어떻게 이동할 수 있나요?

특정 폴더 "ABC"에 여러 개의 .pdf 및 .tex 파일이 있습니다.

모두 계획에 따라 이름이 지정되었습니다.

C01S02_Word.pdf
C03S02SS01_Description_random_words.pdf
C04S01SS02_More_words.pdf
and so forth

이 구성표에서는 장(Chapter)을 의미합니다.에스섹션 및봄 여름 시즌하위 섹션의 경우. 따라서 ABC 폴더에는 각 장에 대한 폴더도 있습니다.C01,C02기타 등등. 각 장 폴더에는 다음과 같은 이름의 폴더가 하나 있습니다.영화.

누군가가 배치 스크립트를 작성하여 모든 .tex 및 .pdf 파일을 각각 이동할 수 있도록 해주세요.영화-폴더 등 으로 C04S01SS02_More_words.pdf이동됩니까 ?C04/PicturesC01S02_Word.pdfC01/Pictures

메모:물론 나는 이미 이것을 구글링했다하지만 지금까지는 많은 비트를 모두 작업 스크립트로 변환할 수 없었습니다. 더 이상 T&E 실행을 원하지 않습니다. :/

답변1

다음 배치 파일을 만듭니다.

@echo off
for %%F in (*.pdf *.tex) do call :subr "%%F"
exit /b

:subr
set filename=%1
move %1 %filename:~1,3%\Pictures
exit /b

노트:

  • for %%F in (*.pdf *.tex) do …*.pdf또는 *.tex와 일치하는 각 파일 이름에 대해 다음 명령문을 한 번씩 수행합니다 %%F.
  • call :subr "%%F"%1첫 번째 인수( )를 "%%F"(파일 이름, 인용부호) 로 설정하여 스크립트의 아래쪽 세 줄을 호출합니다 .
  • exit /b명령 프롬프트 창을 없애지 않고 스크립트를 종료합니다.
  • set filename=%1파일 이름 인수를 filename변수에 복사합니다.
  • move파일을 옮깁니다.
  • %variable:~start,len% 의 표시된 하위 문자열 (첫 번째 문자는 #0) 을 취하므로 의 처음 3개 문자도 마찬가지입니다 . (카운트는 0부터 시작합니다. 건너뛰기 위해 1을 사용하고 있습니다 .)%variable%%filename:~1,3%%filename%"
  • exit /b서브루틴에서 반환됩니다.

관련 정보