问题出在这部分代码中:
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"
)
需要进行的更改包括:
- 添加 SETLOCAL
EnableDelayedExpansion
- 更改
%inp%x
为!inp!
谢谢大卫·波斯蒂尔您的帮助