1
我的代碼塊:爲什麼我的BAT文件變量不被覆蓋?
@ECHO OFF
SET "SRCFOLDER=C:\Users\MyUserName\Desktop\PhotoTests"
SET "TEMPCODE=Hi"
ECHO %TEMPCODE%
ECHO.
FOR /F "tokens=*" %%G IN ('DIR /B %SRCFOLDER%') DO (
ECHO %%G
CALL tooltipInfo.bat %%G 19 | FIND /C "Star" > test.txt
SET /P TEMPCODE=<test.txt
ECHO %TEMPCODE%
ECHO.
)
SET /P TEMPCODE=<test.txt
ECHO %TEMPCODE%
ECHO.
PAUSE
我對輸出困惑,因爲我注意到,在for循環沒有被我所想覆蓋的變量應該是「的test.txt」的內容,每次運行FOR循環都會有所不同。
對於本示例的目的,文件tooltipInfo.bat將根據文件屬性中記錄的評級回顯「1 Star」或「3 Stars」等文本字符串。 FIND語句應該導致將「0」或「1」保存到test.txt文件中。
輸出是:
Hi
Canon_Locked.JPG
Hi
Nikon_Locked.JPG
Hi
0
Press any key to continue . . .
我可以知道爲什麼TEMPCODE變量沒有在循環覆蓋,保留的「喜」的原始值。但是,在最後一段代碼中,它能夠讀取並回顯文件的實際內容。
另一個程序員絆倒也開啓延遲擴展通過延期擴張。我們可以讓批處理文件已經死掉嗎?語法比大多數程序員都舊,並且完全鈍。我對任何批量出發的人的建議:改用Powershell。 –