2016-07-07 5 views
0

"a"를 파일 이름의 특정 위치에 추가하려고합니다.
일괄 파일 이름 바꾸기 파일 이름에 문자 추가

파일은 모든 PDF 파일이며, 다음과 같은 형식으로 파일 이름이 같은 다른 수 있습니다
x.pdf

x는 1-999 범위 수
또는
x_x.pdf합니다. 이름을 바꿀 파일은 "_"다음에 2 또는 3 개의 문자가있는 파일입니다. 새로운 파일 이름은 "A"(가) _이 예에서
굵게 파일이 "는"는 _

0.pdf 후
0_34.pdf을해야 후
10.pdf을 가져야한다
10_1.pdf
10_10.pdf
10_111.pdf

임은 IF exist *_??.pdf ren *_a??.pdf (
과 같은 것을하려고하거나 루프를 만드는 것 for %%o in (*_??.pdf) do ren "%%o" "*_a??.pdf"
그리고 그 다음 3 개로 무엇을하려고합니까? 그것은 아주 가까이에있는 것처럼 보이지 않기 때문에, 나는 너희들에게 도움을 청한다! :)

+0

입력 마스크로 '? * _ ?? *. pdf' ('_' 이전에 적어도 하나의 char,'_' 뒤에 적어도 두 chars)를 사용할 수 있습니다. ... – aschipfl

답변

0

다음과 같은 코드를 시도 할 수 있습니다 : 여기

for /F "eol=| tokens=1,* delims=_" %%E in (' 
    dir /B /A:-D "?*_??*.pdf" ^| findstr /I /R /C:"^[0-9][0-9]*_[0-9][0-9][0-9]*\.pdf$" 
') do (
    ECHO ren "%%E_%%F" "%%E_a%%F" 
) 

차라리 표준 for 루프보다 for /F을 사용하고를 루프가 반복하는 동안 디렉터리 내용이 수정되어 문제를 일으킬 수 있습니다 (At which point does for or for /R enumerate the directory (tree)?). dir /B의 출력을 구문 분석하여 for /F 인 경우 전에 디렉터리 내용이 으로 읽 힙니다. 모든 항목의 이름이 바뀝니다.

명령 줄은 여기에 추가 필터를 구성하기 때문에 이름 규칙에 따라 파일 이름이 변경됩니다. 명령을 제거하고 싶지 않은 경우 ^| 명령을 제거하십시오.

테스트 목적으로 ren 명령에 ECHO을 추가 했으므로 파일의 이름을 바꾸려면 제거하십시오.