Пакетный файл: цикл не выводит введенное значение переменной во внешний файл
Проблема заключается в этой части кода:
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)
1 ответ
Решение
Вот код, который работает:
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 за вашу помощь