2014-02-06 7 views
0
@echo off 
Setlocal enabledelayedexpansion 

Set "Pattern=rename" 
Set "Replace=reuse" 

For %%a in (*.jpg) Do (
Set "File=%%~a" 
Ren "%%a" "!File:%Pattern%=%Replace%!" 
) 

의 루프 문을 이해하고 싶이 이름을 변경 .JPG 가진 문자열 rename .Ref : How to rename file by replacing substring using batch in Windows는 사람이 For loop이 일을 어떻게 나를 이해 할 수 있습니까? 또한 Access Denied을 없애기 위해 여기에 /f 스위치를 사용할 수 있습니까?박쥐 파일

답변

2

예제의 for 루프는 현재 디렉토리에 .jpg으로 끝나는 각 파일을 반복합니다.

루프 %%a의 모든 반복은 현재 .jpg 파일의 이름으로 확장됩니다.

다음 rename 명령은 %%a (현재 .jpg 파일)의 이름을 !File! 변수의 수정 된 버전 인 지정된 이름으로 변경합니다.

"!File:%Pattern%=%Replace%!" - 이것은 문자열 조작입니다. DOS Tips을 참조하십시오. 변수 !File!의 내용으로 확장되며 여기서 %Pattern%%Replace%과 같습니다.

그래서 당신은 당신이 동일한 "Test_1_variable"에 설정 한 변수 %test%이 있고 경우에 당신은 출력 Test 1 variable 것이다 echo %test:_= %를 실행합니다.

1

테스트 : for/f를 사용하여 파일의 이름이 두 번 변경되지 않도록하십시오.

@echo off 
Setlocal enabledelayedexpansion 

Set "Pattern=rename" 
Set "Replace=reuse" 

For /f "delims=" %%a in ('dir /b /a-d *.jpg ') Do (
Set "File=%%~na" 
Ren "%%a" "!File:%Pattern%=%Replace%!%%~xa" 
)