从我在Windows中的文件名中删除最后一个字符

时间:2015-01-13 21:13:43

标签: windows batch-file filenames rename

我对批处理编程很新,我想删除文件名中的最后一个字符。

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

但它删除了第一个和最后一个角色,我也只在这里看到了这个,我仍然很困惑这是如何工作的

1 个答案:

答案 0 :(得分:8)

根据您最近的澄清 - 我会做以下事情。

@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_6789.txt
11_myfile_12345_0987.txt

10_myfile_12345_.txt
11_myfile_12345_.txt

如果您要删除结尾_,只需将!filename:~0,-4!更改为!filename:~0,-5!即可。这很简单string manipulation