我只是一个批处理编程的初学者,所以这个问题可能真的很简单。
命令为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"
代码只在不存在该文件名的文件时才重命名该文件,以避免错误消息。