使用 ren 命令删除前缀不起作用



我只是一个批处理编程的初学者,所以这个问题可能真的很简单。

命令为ren -* *;我想重命名所有以破折号开头的文件;例如,-spec.txt to spec.txt .

然而它不工作!为什么?

因为REN命令不是这样解释通配符的;-)

如果你想知道它是如何工作的,那么看看Windows RENAME命令是如何解释通配符的?

不幸的是,您不能使用简单的REN命令来删除前面的-。您将需要编写并使用一个短的批处理脚本。像下面这样的东西可以做到这一点。我打开和关闭延迟扩展以避免文件名中!的问题。

@echo off
setlocal disableDelayedExpansion
for %%F in (-*) do (
  set "file=%%F"
  setlocal enableDelayedExpansion
  ren "!file!" "!file:~1!"
  endlocal
)

如果你知道你的文件名不包含!,那么脚本可以像下面这样简单:

@echo off
setlocal enableDelayedExpansion
for %%F in (-*) do (
  set "file=%%F"
  ren "!file!" "!file:~1!"
)

试试这个(命令行,对于批处理脚本双倍%%%):

for /f "delims=-" %i in ('dir /b /a-d -*') do if not exist "%i" rename "-%i" "%i"

代码只在不存在该文件名的文件时才重命名该文件,以避免错误消息。

最新更新