FOR 在提示符下有效,但在脚本文件中无效?

FOR 在提示符下有效,但在脚本文件中无效?

作为我正在为客户完成的任务的一部分,我需要对企业登录脚本进行一些修改。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.

相关内容