错误:“|”此时出乎意料的批处理脚本
Posted
技术标签:
【中文标题】错误:“|”此时出乎意料的批处理脚本【英文标题】: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
使用"
和'
,但我仍然有错误。
【问题讨论】:
【参考方案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
命令行。以上是关于错误:“|”此时出乎意料的批处理脚本的主要内容,如果未能解决你的问题,请参考以下文章
(stderr) =256m""=="" 此时在 Pentaho Shell 脚本中出乎意料
奇怪的IncrediBuild错误:Files Java jre1.8.0_161 bin“”==“”此时出乎意料