Пакетный файл: цикл не выводит введенное значение переменной во внешний файл

329
cgitech

Проблема заключается в этой части кода:

for /l %%x in (1, 1, %num%) do ( set /p "inp=Enter Ext of PC: " echo pc-%inp%x>>"Myfile.log" ) 

Вот полный код:

@ECHO OFF  :: +++++++++++++++++++ MENU +++++++++++++++++++++ :menu cls echo. echo 1) Add PCs to Log File echo 2) View Log File echo 3) Exit echo. goto option  :option set /p op=Type option #: if "%op%"=="1" goto addext if "%op%"=="2" goto viewcnt if "%op%"=="3" goto exit   :: ++++++++++++++++++++ OPTIONS ++++++++++++++++++++++  :addext :: Enter Number of PCs to Add to Log File echo. set /p "num=Enter Num of PCs to Add: " echo. goto addlog  :addlog :: Create/Clear Log File/Enter Computer Extensions/Write to Log File cls echo. echo.>"Myfile.log" for /l %%x in (1, 1, %num%) do ( set /p "inp=Enter Ext of PC: " echo pc-%inp%x>>"Myfile.log" ) echo. pause goto menu  :viewcnt :: View Log File type Myfile.log echo. pause goto menu  :exit @exit 

Цели

Введите количество компьютеров для добавления в файл журнала - Works

set /p "num=Enter Num of PCs to Add To: " 

Выход:

Enter Num of PCs to Add To: 

Создать / Стереть файл журнала (каждый раз, когда выбирается опция 1 меню) - Работает

echo.>"Myfile.log" 

Установить переменную %inp%для каждого из количества компьютеров из %num%переменной - нужна помощь

for /l %%x in (1, 1, %num%) do ( set /p "inp=Enter Ext of PC: " echo pc-%inp%x>>"Myfile.log" ) 

Выход:

Enter Ext of PC: 

(Повторяется количество раз %num%, равное)

  • Запрашивает ввод переменной расширения для количества раз, предписанного предыдущим вводом - Работает
  • Возможность ввода в каждом расширении - Работает
  • Не уверен, что происходит с введенной переменной - нужна помощь

Записать переменные в файл журнала - нужна помощь

echo pc-%inp%x>>"Myfile.log" 
  • Префикс, предшествующий переменной, показывает, сколько раз было введено - Работает
  • Не включая введенные переменные - нужна помощь

Просмотр файла журнала - Работы

type Myfile.log 

Дальнейшие соображения:

  • pc-%inp%это имя компьютера (префикс: pc-), за которым следует (переменная: %inp%/ пример: pc-a001 )
  • %inp%должен быть буквенно-буквенным (одна буква с 3 цифрами: a001 )
0
[EnableDelayedExpansion - Windows CMD - SS64.com] (https://ss64.com/nt/delayedexpansion.html) DavidPostill 6 лет назад 1
@DavidPostill - Спасибо за ваш вклад, но я все еще получаю те же результаты. Я вставил эхо EnableDelayedExpansion: SETLOCAL EnableDelayedExpansion.> "Myfile.log" для / l %% x in (1, 1,% num%) do (set / p "inp = Enter Ext of PC:" echo pc-% inp % x >> "Myfile.log") cgitech 6 лет назад 0
Вы упустили момент. Вам также необходимо заменить `-% inp% x` на` -! Inp! X`. DavidPostill 6 лет назад 0
Вот это да!!! Я пропустил это полностью !!! Благодарю. Также x в _! Inp! X_ не нужен. cgitech 6 лет назад 0

1 ответ на вопрос

0
cgitech

Вот код, который работает:

SETLOCAL EnableDelayedExpansion echo.>"Myfile.log" for /l %%x in (1, 1, %num%) do ( set /p "inp=Enter Ext of PC: " echo pc-!inp!>>"Myfile.log" ) 

Необходимые изменения были:

  • добавление SETLOCAL EnableDelayedExpansion
  • меняется %inp%xна!inp!

Спасибо DavidPostill за вашу помощь

Похожие вопросы