我只是批量编程的初学者,所以这个问题可能非常简单。
命令是ren -* *
;我想重命名以破折号开头的所有文件;例如,
-spec.txt
至spec.txt
。
然而它不起作用!为什么呢?
答案 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"
只有在不存在具有此名称的文件时,代码才会重命名该文件,以避免出现错误消息。