作为我为客户处理的任务的一部分,我需要对企业登录脚本进行一些修改。Windows 命令行绝对不是我的专业领域,但我对其中的大部分都做得很好。但是,我遇到了以下我无法弄清楚的不一致行为。
以下命令:
Set TMP=
For /f "tokens=1,2,3 delims=:" %A in ('ipconfig ^| Find "Default Gateway" ^| Findstr/N "."') do (If not defined TMP Set TMP=%~C)
当在命令提示符(Windows 7 CMD.EXE 窗口)下执行时,按预期工作,TMP 将设置为我的默认网关的 IP 地址。但是,如果我从 CMD 文件执行完全相同的命令,在同一个窗口中,它会失败并显示以下输出 (Echo On):
>Set TMP=
~C) was unexpected at this time.
>For /f "tokens=1,2,3 delims=:" ~C)
我已经尝试了 CALL 和直接运行脚本。我已经尝试过使用和不usebackq
使用 ,以及在 之后使用和不使用括号DO
,每次都得到相同的结果:它以交互方式工作,但不是来自同一会话中的脚本。
这到底是怎么回事,我该如何解决?