我只是批處理編程的初學者,所以這個問題可能非常簡單。使用ren命令刪除前綴不起作用
該命令是ren -* *
;我想重新命名所有以破折號開頭的文件;例如, -spec.txt
至spec.txt
。
但它不起作用!爲什麼?
我只是批處理編程的初學者,所以這個問題可能非常簡單。使用ren命令刪除前綴不起作用
該命令是ren -* *
;我想重新命名所有以破折號開頭的文件;例如, -spec.txt
至spec.txt
。
但它不起作用!爲什麼?
因爲這不是如何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!"
)
試試這個(命令行,批量腳本雙%
到%%
):
for /f "delims=-" %i in ('dir /b /a-d -*') do if not exist "%i" rename "-%i" "%i"
只有在沒有該名稱的文件存在以避免錯誤消息時,該代碼纔會重命名文件。
哇;有效!非常感謝! :) – Michael126