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。 –