xxxxxxx_12345.pdf라는 파일이 있는데이 접미어를 삭제하려고하면 결과가 xxxxxxx.pdf가됩니다. 나는 다음과 같은 시도 :배치 스크립트 이름 바꾸기 파일
forfiles /S /M *_12545.pdf /C "cmd /c rename @file @fname*.pdf"
을하지만 파일 이름을 변경할 수 있습니다. 이 문제를 해결할 수 있습니까? 감사합니다
xxxxxxx_12345.pdf라는 파일이 있는데이 접미어를 삭제하려고하면 결과가 xxxxxxx.pdf가됩니다. 나는 다음과 같은 시도 :배치 스크립트 이름 바꾸기 파일
forfiles /S /M *_12545.pdf /C "cmd /c rename @file @fname*.pdf"
을하지만 파일 이름을 변경할 수 있습니다. 이 문제를 해결할 수 있습니까? 감사합니다
나는 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%
같은 것을 사용하는 사용자를 가능하게 할 것이다 지연된 환경 변수를 사용할 수 있습니다. , CurrentFileName
가 FileName_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입니다.
이 도움이 조금 바랍니다.
호랑이 감사합니다, 그것을 appriciate – Esmael
정말로 ** 파일 **이 있다면 forfiles가 필요 없습니다. – Compo