我正在尝试重命名文件夹中的dbf文件。下面的批处理脚本当前设置为将文件重命名为其当前名称。如何修改语法以仅使用前8个字符重命名文件,包括.dbf扩展名?我尝试使用“%% ~nx:~8.dbf”作为目标名称,但它似乎不起作用。谢谢!
for %%x in ("C:\Users\user\Documents\monthly_adhoc\importclm\*.dbf") do (
rename "%%x" "%%~nx.dbf")
输入文件将是这样的:
12345678_XXXXXXX_KKKKKK.dbf
12364178_XXXXXXX_KKKKKK.dbf
12124668_XXXXXXX_KKKKKK.dbf
12342178_XXXXXXX_KKKKKK.dbf
我希望输出文件是这样的。
12345678.dbf
12364178.dbf
12124668.dbf
12342178.dbf
答案 0 :(得分:2)
您需要一个临时变量(FileName
)来提取每个文件名的前8个字符:
setlocal EnableDelayedExpansion
for %%X in ("C:\Users\user\Documents\monthly_adhoc\importclm\*.dbf") do (
set FileName=%%~nX
rename "%%~X" "!FileName:~0,8!%%~xX")
endlocal
setlocal
/ endlocal
阻止了延迟扩展。
请查看this post以获取解释。
答案 1 :(得分:2)
这应该这样做。
@echo off
setlocal EnableDelayedExpansion
for %%x in ("C:\Users\user\Documents\monthly_adhoc\importclm\*.dbf") do (
set newname=%%~nx
ren "%%x" "!newname:~0,8!.dbf"
)