gpt4 book ai didi

windows - 批量编程 : finding a given string in another program's - maybe delayed - output

转载 作者:可可西里 更新时间:2023-11-01 11:38:07 25 4
gpt4 key购买 nike

我想在我的 Windows 7 批处理程序的帮助下启动 Apache 服务。这是一个非常简单的任务,我所要做的就是输入:

net start Apache2.2

然后回车; 但我必须拥有管理员权限才能这样做,否则我会收到如下错误消息:

System error 5 has occurred.

Access is denied.

没关系,但我想检查“net start XY”命令的输出,如果输出(或响应)包含提到的“拒绝访问”字符串,那么我想在批处理程序的另一部分做一些其他事情(输出一些自定义错误消息和内容)。
我试图用 FIND 检查输出像这样的命令(它不按应有的方式工作):

@echo off
set search_string=Access is denied
echo We are looking for this string: "%search_string%"
rem set errorlevel =
net start Apache2.2 | find /i "%search_string%" > nul
echo The errorlevel number is: "%ERRORLEVEL%"
if %ERRORLEVEL% EQU 0 goto gotcha
if %ERRORLEVEL% EQU 1 goto not_found
if %ERRORLEVEL% EQU 2 goto para

:gotcha
echo OK, found it
echo So maybe you don't have the rights to do so...
goto end

:not_found
echo String not found...
echo So this would mean there are no problems related to admin-rights... but YES, there are... :-S
goto end

:para
echo Something's not OK...
goto end

:end
echo -- END --
pause

在没有管理员权限的情况下启动这个批处理程序,它输出提到的“访问被拒绝”,所以它应该跳转到“gotcha”标签。不幸的是,它不能正常工作,它会跳转到“not_found”,这意味着它没有找到给定的字符串(“访问被拒绝”)。

也许问题在于

net send XY

命令发送“访问被拒绝”输出有点延迟,就在检查管理员权限之后,find 不再关心它。不过也只是猜测,不知道问题的真正解释。

但是当我创建另一个小的批处理程序时上面的代码确实有效,它只是简单地用“访问被拒绝”字符串回显上面的行。所以另一个小批处理程序,它表明“查找”命令可以像上面那样工作,看起来像这样:

@echo off
echo.
echo System error 5 has occurred.
echo.
echo Access is denied. blabla
echo.

我用名称“write_accessdenied_stuff.bat”保存了这个文件。

在那之后,我尝试了上面的代码,但我写的不是“net send XY...”行:

write_accessdenied_stuff.bat | find /i "%search_string%" > nul

所以代码的开头是这样更改的,并且它工作:

@echo off
set search_string=Access is denied
echo We are looking for this string: "%search_string%"
write_accessdenied_stuff.bat | find /i "%search_string%" > nul
..........
..........

有了这个,find 命令将错误级别设置为 0,这意味着它已经找到给定的字符串,因此程序的执行跳转到“gotcha”标签。

那么我怎样才能找到“net start XY”命令的一点延迟“访问被拒绝”输出呢?

非常感谢您!!!

最佳答案

使用

net start Apache2.2 2>&1 | find /i "%search_string%" > nul

为了将 STDERR 绑定(bind)到标准输出。

关于windows - 批量编程 : finding a given string in another program's - maybe delayed - output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6203488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com