【问题标题】:Pipe symbol | unexpected in FOR /F loop管道符号 | FOR /F 循环中的意外
【发布时间】:2022-01-10 16:31:12
【问题描述】:
FOR /F "tokens=3 delims= " %i IN (query session | FINDSTR /i "console") DO set "ID=%i"

我收到一个错误| was unexpected at this time.

【问题讨论】:

  • N. B.: 在批处理文件中,您需要将%-符号加倍(在命令提示符中键入for /?)...

标签: windows for-loop batch-file cmd pipe


【解决方案1】:

要避免的两个非常简单的错误。

首先阅读For /? 使用“单引号”作为命令。

其次^escape |

FOR /F "tokens=3 delims= " %i IN ('query session ^| FINDSTR  /i "console"') DO set "ID=%i"

@aschipfl 在评论中提到的提醒在批处理文件或 file.cmd 中使用双倍的 %%

【讨论】:

    【解决方案2】:

    在使用命令实用程序之前,您应该始终阅读它的使用信息。如果您这样做了,您会注意到,当您专门尝试隔离具有会话名称console 的行时,您可以使用query session console 而不是不太健壮的query session | FINDSTR /i "console"。当然,使用更合适的命令意味着您对水平条没有任何问题,(pipe)

    如果你愿意,你也可以skip第一行,(header),如果你确定你的 ID 将永远是第三个空格分隔的标记,那么你可以使用:

    来自命令提示符,():

    For /F "Skip=1 Tokens=3" %G In ('%SystemRoot%\System32\query.exe Session Console 2^>NUL') Do @Set "ID=%G"
    

    或来自批处理文件,():

    @For /F "Skip=1 Tokens=3" %%G In ('%SystemRoot%\System32\query.exe Session Console 2^>NUL') Do @Set "ID=%%G"
    

    【讨论】:

      猜你喜欢
      • 2020-06-06
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多