У меня есть этот блок кода:Почему моя переменная файла 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 звезда» или «3 звезды» в зависимости от рейтинга, записанного в свойствах файла. Оператор FIND должен привести к тому, что «0» или «1» будет сохранен в файле test.txt.
Выход:
Hi
Canon_Locked.JPG
Hi
Nikon_Locked.JPG
Hi
0
Press any key to continue . . .
Могу ли я узнать, почему переменная TEMPCODE не переписывается в контуре и сохраняет исходное значение «Привет». Однако в последнем блоке кода он смог прочитать и отобразить фактическое содержимое файла.
Еще один программист подставляли отсроченным расширением. Можем ли мы позволить пакетным файлам уже умереть? Синтаксис старше большинства программистов и полностью тупой. Мое предложение для кого-то, начинающего в партии: вместо этого используйте Powershell. –