Это не может работать, так как вам нужно замедленное расширение переменной, когда вы пытаетесь обратиться к изменяющейся переменной в блоке if
. Вы можете попробовать следующее:
@echo off
setlocal enabledelayedexpansion
for %%i in (1 2 3) do (
set /p c=enter a name?
echo %%i
echo !c! >> file.txt
)
, поскольку при этом будет оцениваться c
только при выполнении кода, а не при анализе строки (в данном случае полный оператор if
).
Простой перевод вашего C-кода в пакетном режиме, вероятно, будет выглядеть примерно так:
@echo off
set /p i=
:loop
set /p j=
echo %j%
set /a j+=1
if %j% LSS %i% goto loop
Вы можете добавлять подсказки, если хотите, хотя в программе на Си их тоже не было :). И теперь вы можете передать вывод пакетной программы в целом или просто добавить >> file
туда для хорошей меры.