【问题标题】:CMD: Script to batch rename files in a folder based upon the first 8 characters of its nameCMD:根据文件夹名称的前 8 个字符批量重命名文件夹中文件的脚本
【发布时间】:2015-07-30 21:03:05
【问题描述】:

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

【问题讨论】:

  • 如果您可以重复使用this answer 并在_ 处拆分,那么此问题可以作为重复项关闭。

标签: batch-file cmd


【解决方案1】:

应该这样做。

@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"
)

【讨论】:

    【解决方案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 的解释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-23
      • 1970-01-01
      • 2012-05-04
      • 2016-09-11
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 1970-01-01
      相关资源
      最近更新 更多