2015-01-13 3 views
3

Im 배치 프로그래밍에 새로운 기능이있어서 파일 이름의 마지막 문자를 제거하고 싶습니다.윈도우의 파일 이름에서 마지막 문자를 제거하십시오.

10_myfile_12345_6789.txt 
11_myfile_12345_0987.txt 

내 파일 이름의 마지막 4 자리를 제거하고 싶습니다. 어떻게 할 수 있습니까?

나는이

@echo off 
setlocal enabledelayedexpansion 
set X=3 
set FOLDER_PATH= 
pushd %FOLDER_PATH% 
for %%f in (*) do if %%f neq %~nx0 (
    set "filename=%%~nf" 
    ren "%%f" "!filename!%%~xf" 
) 
popd 
PAUSE 

시도했지만 그것이 첫 번째와 마지막 문자 제거, 난 단지도 메신저는 여전히이 최근 설명과 함께

+0

어떤 언어입니까? 너 뭐 해봤 니? – Jeremy

+0

내 게시물을 편집했는데 도스에서 실행했습니다. –

+0

@XanderVane 파일 확장명을 제거하려고합니까? 또는 파일 확장명 앞에있는 네 개의 문자를 제거하려고합니까? 예를 들어 -'10_myfile_12345_6789.txt'가'10_myfile_12345_6789' 또는'10_myfile_12345_.txt'가되어야합니까? – unclemeat

답변

7

을 매우 혼란스러워 어떻게 작동하는지 여기를 보았다 - 내가 할 것 다음과 같은. 당신은 단순히 !filename:~0,-5!!filename:~0,-4!을 변경 후행 _을 제거하려면

@echo off 
setlocal enabledelayedexpansion 
set FOLDER_PATH=C:\Some\Path\ 
for %%f in (%FOLDER_PATH%*) do if %%f neq %~nx0 (
    set "filename=%%~nf" 
    ren "%%f" "!filename:~0,-4!%%~xf" 
) 
PAUSE 

10_myfile_12345_.txt 
11_myfile_12345_.txt 

로 예

10_myfile_12345_6789.txt 
11_myfile_12345_0987.txt 

변경됩니다. 이것은 간단합니다 string manipulation.

+0

감사하지만이 디렉토리 이름이 변경된 것 같습니다 –

+0

@ XanderVane 저는 실제로 내 솔루션을 테스트하지 않았습니다. 업데이트 된 버전을 확인하십시오. for 루프에 디렉토리 자체가 아닌 디렉토리 내용을 얻기 위해'*'가 추가되었습니다. – unclemeat

관련 문제