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

时间:2013-05-30 11:13:01

标签: batch-file command

我只是批量编程的初学者,所以这个问题可能非常简单。

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

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

2 个答案:

答案 0 :(得分:2)

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

如果您想知道它的工作原理,请查看How does the Windows RENAME command interpret wildcards?

很遗憾,您无法使用简单的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!"
)

答案 1 :(得分:1)

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

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

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