2017-03-16 153 views
1

我試圖用批處理腳本替換文件名中的字符串,但如果文件具有驚歎號或與符號,則會遇到問題。使用感嘆號和&符號替換使用批處理的文件名中的字符串

Setlocal enabledelayedexpansion 
Set "Pattern=[String_A]" 
Set "Replace=[B_String]" 
For %%a in (*.*) Do (
    Set "File=%%~a" 
    Ren "%%a" "!File:%Pattern%=%Replace%!" 
) 

上面的代碼適用於沒有這些的文件名,但我需要其他幫助。

這是我必須運行多次(這是更大的腳本的一部分)。

任何幫助表示讚賞。

回答

1

問題是如果延遲擴展被禁用,則set "file=%%~a中的擴展將是安全的。
解決方案是切換延遲擴展模式。

Setlocal DisableDelayedExpansion 
Set "Pattern=[String_A]" 
Set "Replace=[B_String]" 
For %%a in (*.*) Do (
    Set "File=%%~a" 
    Setlocal EnableDelayedExpansion 
    Ren "!file!" "!File:%Pattern%=%Replace%!" 
    endlocal 
) 
+0

我以爲我試過這個,但必須有交換的東西。謝謝! –

相關問題