0
我很難讓if語句在 循環內工作。任何幫助,將不勝感激。批處理語句不工作for循環
for %%i in (*.txt) do (
set filename=%%i
set filenametrunc=!filename:~0,28!
If %filename:~0,28%==ProjectLoad_Refresh_%today% (
Set fileName=%filenametrunc%
)
)
我很難讓if語句在 循環內工作。任何幫助,將不勝感激。批處理語句不工作for循環
for %%i in (*.txt) do (
set filename=%%i
set filenametrunc=!filename:~0,28!
If %filename:~0,28%==ProjectLoad_Refresh_%today% (
Set fileName=%filenametrunc%
)
)
我真的不明白爲什麼不使用"ProjectLoad_Refresh_%today%*.txt"
作爲通配符模式,而不是僅僅*.txt
,但是這個代碼應該工作:
@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "Today=2017-08-11"
for %%I in (*.txt) do (
set "FileName=%%I"
set "TruncatedName=!FileName:~0,28!"
if "!TruncatedName!" == "ProjectLoad_Refresh_%Today%" set "FileName=!TruncatedName!"
)
endlocal
有一個例外:文件名中含有1個或多個驚歎號分數。
爲了解所使用的命令及其工作方式,請打開命令提示符窗口,在其中執行以下命令,並仔細閱讀爲每個命令顯示的所有幫助頁面。
echo /?
endlocal /?
for /?
if /?
set /?
setlocal /?
謝謝你的解釋。這工作正常。我會看看這些命令,謝謝你的建議。 – yangk1351
繼續使用'引用變量!',而不是''%例如在''SETLOCAL EnableDelayedExpansion''(https://ss64.com/nt/delayedexpansion.html)範圍內的'!filename:〜0,28!'和'!filenametrunc!'。 – JosefZ
我試着用%替換!在if語句中,它不能和SETLOCAL EnabledDelayedExpansion一起使用。 – yangk1351