Выполнение SET /P в теле цикла FOR в Windows Shell Script (BAT-файл)

компьютеры программирование windows shell bat

Требуется написать BAT-файл для Windows 2000+, обрабатывающий построчно некоторый файл file.txt, причём результат обработки каждой строки зависит от введённого пользователем значения (для каждой строки вводится отдельно). Пытаюсь выполнить следующий скрипт:

@echo off
for /f "tokens=*" %%i in (file.txt) do (
set /p param="%%i [Y/N]?"
if /i "%param%"=="Y" (
echo Делаем
) else (
echo Пропускаем
)
)

Для всех строк file.txt выводится "Пропускаем" вне зависимости от того, ввожу я "Y" или что-то другое. При этом если перед циклом явно объявить set "param=y", также непоколебимо выводится "Делаем". Вне цикла конструкция...

set /p param="[Y/N]?"
if /i "%param%"=="Y" (
echo Делаем
) else (
echo Пропускаем
)

...работает превосходно, а в цикле нникак. Что посоветуете?
Ответы:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (file.txt) do (
set /p param="%%i [Y/N]?"
if /i "!param!"=="Y" (
echo Делаем
) else (
echo Пропускаем
)
)
endlocal


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.