作为我正在为客户完成的任务的一部分,我需要对企业登录脚本进行一些修改。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
,每次结果都一样:它可以交互工作,但不能在同一会话中通过脚本工作。
这到底发生了什么?我该如何解决?
答案1
help for
以下是cmd 输出的一部分:
To use the FOR command in a batch program, specify %%variable instead
of %variable. Variable names are case sensitive, so %i is different
from %I.