CMD:基于名称的前8个字符批量重命名文件夹中文件的脚本

时间:2015-07-30 21:03:06

标签: batch-file cmd

我正在尝试重命名文件夹中的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

2 个答案:

答案 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"
)