저는 Windows 7에서 100개의 PDF 중 처음 6개 숫자를 보고 6개의 고유 숫자를 기반으로 폴더를 만들고 PDF를 해당 폴더로 이동하는 배치 스크립트를 만들려고 합니다. (6개의 고유 번호가 동일한 .pdf가 일부 있습니다.)
아래 배치는 거의 나에게 효과적입니다. 각각의 고유한 6개 숫자 pd에 대한 폴더를 생성하지만 모든 문서를 이동하지는 않습니다. 예: 다음은 100036 폴더로 이동합니다. 100036.pdf는 이동되고, 1000361.pdf는 이동됩니다. 1000361copy가 이동됩니다.
파일명에 공백이 있을 경우 100036 폴더로 이동되지 않습니다. 100036 - 1.pdf, 100036 - copy.pdf가 이동되지 않습니다.
이 문제를 해결하는 방법에 대한 아이디어가 있습니까?
미리 감사드립니다:
@echo off
REM This script creates folders based on file names and moves those files into the folders.
REM *.pdf is the search term. Change this to search for different files.
REM md %name:~0,6% will make a directory based on the first 6 characters of the file name. Change to 5% for the first 5 characters.
REM move %* %name:~0,6% will move the file to the directory based on the first 6 characters of the file name. Change to 5% for the first 5 characters.
for /f %%F in ('dir/b/a-d *.pdf') do call :sub1 %%F
goto :eof
:sub1
set name=%1
md %name:~0,6%
move %* %name:~0,6%
편집됨:
@echo off
for /f "tokens=*" %%F in ('dir/b/a-d *.pdf') do call :sub1 %%F
goto :eof
:sub1
set name=%1
md %name:~0,6%
move %* %name:~0,6%
답변1
공백 문자를 사용하여 분할 하므로 for /f
전체 파일 이름을 처리하려면 "tokens=*" 옵션을 추가해야 합니다.
for /f "tokens=*" %%F in ('dir/b/a-d *.pdf') do call :sub1 %%F
업데이트: 공백 문자로 인해 mv를 인용해야 합니다.
move "%*" "%name:~0,6%"