从命令提示符运行时,FOR/DO 命令给出“此时出乎意料”

Bon*_*rse 15 windows command-line

尝试直接从命令提示符运行以下命令。

FOR /f "delims=[] tokens=2" %%a in ('ping %computername% -4 -n 1 ^| findstr "["') do (set ip=%%a)
Run Code Online (Sandbox Code Playgroud)

虽然它在批处理文件中运行良好,但如果直接粘贴到命令提示符中运行,我会收到以下错误:

%%a was unexpected at this time.
Run Code Online (Sandbox Code Playgroud)

我如何将其更改为直接从命令提示符工作而不需要批处理文件?

长话要求:

我有一个基本要求是提供一个命令列表,这些命令可以通过复制/粘贴到命令提示符中运行,而不使用批处理文件(只需使用它,不是我的要求,而是那些给我的并且无法更改的) . 我有一个稍后的命令可以将 %ip% 回显到 .txt 文件。

Ƭᴇc*_*007 20

在批处理文件中引用 For 循环变量时,您需要将百分号(即:)加倍%%a,但是如果您在提示符下直接运行命令时这样做,它将不起作用。您需要将它们更改为一个百分号 ( %a)。

也许查看另一个 SU 问题以获取更多信息:批处理文件参数中的百分号(% 和 %%)是什么意思?