我对批处理编程很新,我想删除文件名中的最后一个字符。
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 :(得分: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。