批处理文件:循环不将输入的变量值输出到外部文件

批处理文件:循环不将输入的变量值输出到外部文件

问题出在这部分代码中:

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

目标

输入要添加到日志文件的 PC 数量 -作品

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"
)

需要进行的更改包括:

  • 添加 SETLOCALEnableDelayedExpansion
  • 更改%inp%x!inp!

谢谢大卫·波斯蒂尔您的帮助

相关内容