Я не уверен, как вы смогли напечатать хотя бы одно случайное число.В вашем случае %checker%
должно вычисляться как пустая строка, если вы не запускаете скрипт более одного раза из одного сеанса cmd
.
По сути, причина, по которой ваш скрипт не работает должным образом, заключается в том, чтопеременные в теле цикла анализируются и оцениваются перед выполнением цикла.Когда выполняется тело, переменные уже были оценены, и одни и те же значения используются во всех итерациях.
Поэтому вам необходима оценка с задержкой, иначе называемая отложенное расширение .Сначала вам нужно включить его, а затем использовать специальный синтаксис для него.
Вот ваш скрипт, модифицированный для использования отложенного расширения:
@echo off
setlocal EnableDelayedExpansion
for %%i in (*.txt) do (
set checker=!Random!
echo !checker!
echo %%i% >> backupF
)
endlocal
echo Complete
Как видите, setlocal EnableDelayedExpansion
включает специальную обработку для синтаксиса с отложенным расширением, который составляет !
s вокруг имен переменных вместо %
s.
Вы все еще можете использовать немедленное расширение (используя %
), где оно может работать правильно (в основном, за пределами командных блоков в квадратных скобках).