2013-05-30 70 views
0

我只是批處理編程的初學者,所以這個問題可能非常簡單。使用ren命令刪除前綴不起作用

該命令是ren -* *;我想重新命名所有以破折號開頭的文件;例如, -spec.txtspec.txt

但它不起作用!爲什麼?

回答

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!" 
) 
+0

哇;有效!非常感謝! :) – Michael126

1

試試這個(命令行,批量腳本雙%%%):

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

只有在沒有該名稱的文件存在以避免錯誤消息時,該代碼纔會重命名文件。