【问题标题】:Error: "|" was unexpected at this time batch script错误:“|”此时出乎意料的批处理脚本
【发布时间】:2014-01-17 11:04:40
【问题描述】:

当我运行这个脚本时,我会收到

|在这个时候是出乎意料的。

这是代码:

@ECHO Off

REM Mapeo de unidad U, path de usuario

    net use u: \\server\usuarios\%username%
pause
REM  ***** Description group ****

for /f %%i in ('net user %username% /domain | find /i /c Group') do set RESULT=%%i

echo %RESULT%

pause   

for 语句中,i 使用"',但我仍然有错误。

【问题讨论】:

    标签: batch-file cmd


    【解决方案1】:

    您需要转义 for 命令中的管道字符。应该是^|

    【讨论】:

      【解决方案2】:

      for 中的条件必须先由批处理解析器解析,然后才能将其作为可执行命令传递给 IN() 子句,并且由于管道是 DOS 中的特殊字符,因此您需要使用转义字符( ^) 之前的管道,以在初始批量解析期间保留它,如下所示:

      for /f %%i in ('net user %username% /domain ^| find /i /c Group') do set RESULT=%%i
      

      【讨论】:

      • for 命令行被读取时,解析器会找到一个没有包含在引号字符串中的管道字符。在这种情况下,解析器解释存在管道创建请求,并且for 命令行被分成两部分以创建指示的管道。但这不是这种情况下需要的,管道不是for 命令的一部分。管道位于将生成将由for /f 命令读取的输出的命令中。为了向解析器发出信号,管道字符被转义。这样,解析器就不会尝试在管道字符处拆分for 命令行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多