2017-03-26 1 views
1

xxxxxxx_12345.pdf라는 파일이 있는데이 접미어를 삭제하려고하면 결과가 xxxxxxx.pdf가됩니다. 나는 다음과 같은 시도 :배치 스크립트 이름 바꾸기 파일

forfiles /S /M *_12545.pdf /C "cmd /c rename @file @fname*.pdf" 

을하지만 파일 이름을 변경할 수 있습니다. 이 문제를 해결할 수 있습니까? 감사합니다

+1

정말로 ** 파일 **이 있다면 forfiles가 필요 없습니다. – Compo

답변

0

나는 forfiles 명령으로 작업을 수행하는 방법이있을 것이라고 확신하지만, 보통 for 루프를 사용하는 것이 훨씬 쉬울 것입니다.

@echo off 
pushd %~dp0 
setLocal EnableDelayedExpansion 

for %%f in (*_12545.pdf) do (
    set "CurrentFileName=%%~nf" 
    set "RenameTo=!CurrentFileName:~0,-6!" 
    echo.ren !CurrentFileName!%%~xf !RenameTo!%%~xf 
) 

pause>nul 

setLocal EnableDelayedExpansion함으로써, 사용자는 !variable! 대신 %variable% 같은 것을 사용하는 사용자를 가능하게 할 것이다 지연된 환경 변수를 사용할 수 있습니다. , CurrentFileNameFileName_12545이 될 것이다이 경우 있도록

set "CurrentFileName=%%~nf" 

%%~nf는 확장자가없는 당신에게 파일의 이름을 제공 할 것입니다. 구문의 전체 설명을 보려면 for /?을 입력하십시오. 내가 접미사를 제거 !variable:~0,-6!을 사용

set "RenameTo=!CurrentFileName:~0,-6!" 

알 수 있습니다. 이것은 String Manipulation입니다. 사용자는 길이가 6 인 접미어가없는 문자열 (이 경우 _12545 임)을 저장하고 있습니다.

echo.ren !CurrentFileName!%%~xf !RenameTo!%%~xf 

는 당신이 실제로 이름을 바꾸기 전에 그래서 당신은 확인할 수 ren 앞에 echo을 두었다. %%~xf은 앞의. (점)을 포함한 파일 확장명을 반환합니다. 이 경우 파일 확장명은 .pdf입니다.

이 도움이 조금 바랍니다.

+0

호랑이 감사합니다, 그것을 appriciate – Esmael

관련 문제