폴더 이름이 filename_ex.doc 인 하위 폴더와 파일이 들어있는 폴더 A의 파일 이름을 일괄 적으로 바꿀 수 있으며 filename.doc처럼 보이게 할 수 있습니까?cmd 일괄 처리 이름 바꾸기 하위 폴더/파일
저는 잠시 동안이 작업을 시도해 왔으며 서사시 적으로 실패했습니다. 도와주세요.
폴더 이름이 filename_ex.doc 인 하위 폴더와 파일이 들어있는 폴더 A의 파일 이름을 일괄 적으로 바꿀 수 있으며 filename.doc처럼 보이게 할 수 있습니까?cmd 일괄 처리 이름 바꾸기 하위 폴더/파일
저는 잠시 동안이 작업을 시도해 왔으며 서사시 적으로 실패했습니다. 도와주세요.
마틴 제임스에 대한 두 번째 의견의 방향에 문제가있는 하위 폴더의 파일 이름도 변경한다고 가정합니다. DIR/S 옵션으로 코드를 시도한 것 같습니다. 하지만 당신은 너무 가까이에 :-) 당신은 단지 2 개의 루프를 사용해야했습니다!
편집 - 고정 코드 출력이 제대로 표시되면, 그것은 작동 할 수 있도록하기 위해 ECHO 놓습니다. 각 파일 이름이 _ex.ext
에 표시되는 내용을보다 _
또는 .
기타를 가지고 있지 않는 한
@echo off
for /r %%D in (.) do (
pushd "%%~fD"
for /f "tokens=1-3 delims=_." %%A in ('dir /b *_ex.ext 2^>nul') do echo ren "%%A_%%B.%%C" "%%A.%%C"
popd
)
위 한 작동합니다. 경로의 문자는 문제가되지 않아야하며 파일 이름 만 문제가됩니다.
여기에는 모든 파일 이름 (유니 코드 이름 제외)에서 작동해야하는보다 강력한 솔루션이 있습니다. 또한 상당히 빠릅니다. 하위 문자열 연산을 사용하므로 이름에서 제거 할 문자 수를 알아야합니다. 귀하의 예에서는 3 자입니다. 결과 명령이 올바르게 보이면 ECHO를 제거하십시오. 내가 배치 "프로그래밍"을하려 할 때마다
@echo off
setlocal disableDelayedExpansion
for /f "delims=" %%F in ('dir /b /s *_ex.ext') do (
set "old=%%F"
set "new=%%~nF"
setlocal enableDelayedExpansion
echo ren "!old!" "!new:~0,-3!.ext"
endlocal
)
@MartinJames, 나는 내가 결코 이제까지 동안 내가 개발 한 코드 조각 중 하나를 게시 할 것이라고, 그래서 거대한 실패 난 F /위한 시도했습니다 다음 단계 ;-) –
, FOR/D 모든 것들을 읽고 여기에서 문서를 읽으십시오 : [link] (http://ss64.com/nt/for.html). 괜찮은 결과는 지금까지는 ... :(나는 윈도우 배치 프로그래밍을 정말로 싫어한다.) – Alex
@MartinJames : 또한 명령 행에서 시도 : tokens = 1-3 delims = _. "% a ('dir * _ex.ext ') do echo % a_ % b. % c' ... 폴더/서브 폴더 또는 다른 파일에 PATH가있는 경우 : "."및 "_" – Alex