Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 管道不';reg查询后无法工作?_Batch File - Fatal编程技术网

Batch file 管道不';reg查询后无法工作?

Batch file 管道不';reg查询后无法工作?,batch-file,Batch File,我试图用批处理文件检查机器上是否安装了java,并在必要时安装java。但是,管道不工作,我在屏幕上得到了reg查询的结果。代码如下: @ECHO OFF cls :checkjava reg query "HKLM\Software\JavaSoft\Java Runtime Environment" | find "ERROR" > NUL if %errorlevel% == 0 ... 错误消息打印在错误流中,因此需要在&1中重定向它。 这里有更多信息:试试这个: reg q

我试图用批处理文件检查机器上是否安装了java,并在必要时安装java。但是,管道不工作,我在屏幕上得到了reg查询的结果。代码如下:

@ECHO OFF
cls

:checkjava
reg query "HKLM\Software\JavaSoft\Java Runtime Environment" | find "ERROR" > NUL
if %errorlevel% == 0 
...
错误消息打印在错误流中,因此需要在&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

错误消息被发送到标准错误和标准输出,因此在输出上运行
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

我只是打印“已找到/未找到”-但您可以采取任何您想要的操作。

那么我如何使用这些0或1?对不起,我在这方面真的是新手:)我也试过了,但有点不对劲,执行这个命令时命令外壳会立即关闭。知道为什么吗?不管我是否安装了java,它总是会失败。
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