在我正在处理的一些代码中,我需要连接到一个需要terminalIP地址的terminal。 一些代码在这里:
FOR /F "Tokens=1" %%A IN (%IPLIST%) DO ( NET USE //%%A /user:name password SET TERMINAL=%%A ECHO %TERMINAL% )
但是,这样做后,Echo响应:
ECHO is off
作为一个testing,我简单地在ECHO%TERMINAL%Line之后添加SET,并根据它:
TERMINAL=10.123.45.6
所以,我的困境是,根据SET,TERMINAL确实有价值,但ECHO不同意。
之所以这么重要,是因为我不能确定这个值是否适合将来在其他代码中使用,在那里我实现它来在远程系统中执行不同的批处理。
任何帮助将非常感激!
我相信的原因是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
获得所需的行为,请参阅此链接以获取更多详细信息。