0

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

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

然而它不起作用!为什么?

4

2 回答 2

2

因为这不是 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!"
)
于 2013-05-30T11:48:38.957 回答
1

试试这个(命令行,批处理脚本加倍%to %%):

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

仅当不存在具有此名称的文件时,代码才会重命名文件以避免错误消息。

于 2013-05-30T13:17:53.907 回答