作为我为客户工作的任务的一部分,我需要对企业login脚本进行一些修改。 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窗口)上执行时,按预期方式工作,并使用默认网关的IP地址设置TMP。 但是,如果我从CMD文件执行完全相同的命令,则在同一个窗口中 ,会失败并显示以下输出(Echo On):
>Set TMP= ~C) was unexpected at this time. >For /f "tokens=1,2,3 delims=:" ~C)
我已经尝试了CALL和直接运行脚本。 我已经尝试过使用和不使用usebackq ,并且在DO之后使用和不使用括号,并且每次都使用相同的结果:交互式地工作,但不是在同一个会话中的脚本。
这里到底发生了什么,我该如何解决?
下面是cmd输出help for的一部分:
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.