需要有关在Windows中重新编写此批处理脚本以从文件名中消除我想要的字符的指导

问题描述

@echo off
  for %%a in (A*.*) do ren "A*" "/*"

因此,上面的脚本删除了所有文件名前面的字母A。

假设我要删除文件名的最后几个字母(2个或更多字符)

一个名为Dinnermenu_FR的文件

我想摆脱文件名中的_FR或FR,我尝试修改脚本,但没有用。

@echo off
  for %%a in (*.*_FR) do ren "*FR" "/*"

如果我想保留下划线但要去除下划线,该如何重写?

解决方法

REM for each matching file do...
for %%a in (*_FR.*) do (
  REM get the part of the filename before the underscore...
  for /f "delims=_" %%b in ("%%~na") do (
    REM rename the file...
    ECHO ren "%%a" "%%b%%~xa"
  )
)

我注释了每一行,因此您应该能够理解代码。有关修饰符%%~..的帮助,请参见for /?
我还通过仅回显ren命令来撤防。故障排除后,请确保ECHO可以满足您的要求。