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

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 ответ1

0

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

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 за вашу помощь

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .