错误:"|" 这次批处理脚本出乎意料

use*_*665 11 cmd batch-file

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

| 这时出人意料.

这是代码:

@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   
Run Code Online (Sandbox Code Playgroud)

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

Inf*_*ion 28

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

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

  • 当重新执行`for`命令行时,解析器会找到一个未包含在带引号的字符串中的管道符.在这种情况下,解析器解释存在管道创建请求,并且`for`命令行被分成两部分以创建指示的管道.但这不是本例所需要的,管道不是`for`命令的一部分.Pipe在命令中将生成将由`for/f`命令引用的输出.并向解析器发出信号,管道角色被转义.这样,解析器不会尝试在管道字符处拆分`for`命令行. (3认同)

MC *_* ND 6

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