我只是批处理编程的初学者,所以这个问题可能真的很简单。
命令是ren -* *
;我想重命名以破折号开头的所有文件;例如,
-spec.txt
到spec.txt
。
然而它不起作用!为什么?
我只是批处理编程的初学者,所以这个问题可能真的很简单。
命令是ren -* *
;我想重命名以破折号开头的所有文件;例如,
-spec.txt
到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!"
)
试试这个(命令行,批处理脚本加倍%
to %%
):
for /f "delims=-" %i in ('dir /b /a-d -*') do if not exist "%i" rename "-%i" "%i"
仅当不存在具有此名称的文件时,代码才会重命名文件以避免错误消息。