在我正在处理的一些代码中,我需要连接到终端,这需要终端的IP地址。一些代码在这里:
FOR /F "Tokens=1" %%A IN (%IPLIST%) DO (
NET USE //%%A /user:name password
SET TERMINAL=%%A
ECHO %TERMINAL%
)
然而,在这样做之后,Echo回应:
ECHO is off
作为测试,我只是在ECHO%TERMINAL%Line之后添加SET,并根据它:
TERMINAL=10.123.45.6
所以,我的困境是,根据SET,TERMINAL确实有价值,但ECHO不同意。
之所以如此重要,是因为我无法判断该值是否正确,以备将来在其余代码中使用,我将其实现为在远程系统中实现不同批次。
非常感谢任何帮助!
答案 0 :(得分:1)
我相信原因是FOR
被评估为单个命令,环境变量在执行之前被扩展,所以在你的情况下它将像这样运行:
FOR /F "Tokens=1" %A IN (<%IPLIST% value>) DO (
NET USE //%A /user:name password
SET TERMINAL=%A
ECHO <%TERMINAL% value>
)
由于%TERMINAL%
之前不存在FOR
,因此它会被扩展为空字符串,因此会出现观察到的行为。
尝试使用@echo on
运行脚本,它有助于了解正在发生的事情。
您可以通过Setlocal EnableDelayedExpansion
获得所需的行为,有关详细信息,请参阅this link。