2015-09-18 79 views
-1

我想寫一個批處理腳本來重命名其文件名中包含特殊字符的文件。 示例:「我的%文檔」 如果此示例是我的文件名,我如何使用批處理腳本對其進行重命名?批處理腳本來重命名其文件名中包含特殊字符的文件

+1

爲什麼你要問幾乎[同一個問題(http://stackoverflow.com/q/32643692/5047996)的兩倍? – aschipfl

+0

不便之處,我需要一些明確的答案。 – xyz

+0

請提供您遇到問題的代碼; – aschipfl

回答

1

對於限定包含在環境變量中的特殊字符的文件路徑(或一般的任何字符串),則使用set其中整個賦值表達式括在""

rem DEFINE PATH: C:\Root\dir=sub\foo&bar^\100%! 
set "FILEPATH=C:\Root\dir=sub\foo&bar^\100%%!" 

唯一的一點是,你必須如上所述,全部爲%%%

要爲任何命令使用這樣的文件路徑(或字符串),您需要使用延遲擴展。這樣你就「愚弄」了命令解釋器。

把所有這些組合起來,下面應該工作:

rem DEFINE PATH: C:\Root\dir=sub\foo&bar^\100%! 
set "FILEPATH=C:\Root\dir=sub\foo&bar^\100%%!" 
rem DEFINE NEW NAME: new=name% 
set "FILENEWN=new=name%%"  

rem RENAME FILE 
setlocal EnableDelayedExpansion 
ren "!FILEPATH!" "!FILENEWN!" 
endlocal 
+0

謝謝你的答覆,但我需要自動加倍%符號,而不是手動。 – xyz

+0

請注意,變量的值不包含加倍的'%';所以你只需要這樣做,如果你直接在腳本中提到文件路徑;如果通過另一個命令(例如'dir/B My?Doc *',找到的路徑是'My%Document')獲得文件路徑,則不需要加倍'%'; – aschipfl

相關問題