注册查询后管道不起作用?

时间:2013-05-17 07:16:09

标签: batch-file

我正在尝试使用批处理文件检查机器上是否安装了Java,并在必要时安装java。但是,管道不起作用,我在屏幕上获得了reg查询的结果。这是代码:

@ECHO OFF
cls

:checkjava
reg query "HKLM\Software\JavaSoft\Java Runtime Environment" | find "ERROR" > NUL
if %errorlevel% == 0 
...

3 个答案:

答案 0 :(得分:1)

reg query "HKLM\Software\JavaSoft\Java Runtime Environment" 2>&1 | find "ERROR" > NUL

错误信息在错误信息流中打印,因此您需要在& 1中重定向错误信息。 以下是更多信息:http://www.robvanderwoude.com/redirection.php

答案 1 :(得分:1)

试试这个:

reg query "HKLM\Software\JavaSoft\Java Runtime Environment" >nul 2>&1 && goto:OK || goto:fail

:OK
echo reg key found
pause
goto:eof

:fail
echo ERROR key not found!
pause
goto:eof

答案 2 :(得分:1)

错误消息被发送到标准错误和标准输出,因此您需要将标准错误重定向到标准输出,然后才能在输出上运行find

reg query "HKLM\Software\JavaSoft\Java Runtime Environment" 2>&1 | find "ERROR" > nul

另一件事是reg命令本身在成功或失败时返回0或1

Return Code: (Except for REG COMPARE)
  0 - Successful
  1 - Failed

所以你可能根本不必使用find

reg query "HKLM\Software\JavaSoft\Java Runtime Environment"  > nul 2> nul

if %errorlevel% == 0  goto success
echo "Not found"
goto end
:success
echo "Found"
:end

我只是打印发现/未找到 - 但你可以采取你想要的任何行动。

相关问题