根据批处理文件启动服务时返回的错误显示消息?

时间:2014-08-15 17:36:27

标签: batch-file service

也许我没有用正确的术语进行搜索,但我似乎无法在任何地方找到答案。我试图在服务因“登录失败而导致错误”错误时显示特定消息,但我不知道我需要输入批处理文件。在this article的帮助下,这就是我到目前为止所做的:

@echo off
echo This will start your MYSERVICES. If you do not wish to do this, please close this window, otherwise: 
pause
for /F "tokens=3 delims=: " %%H in ('sc query "MYSERVICE1" ^| findstr "        STATE"') do (
  if /I "%%H" NEQ "RUNNING" (
   NET START "MYSERVICE1"
  )
)
for /F "tokens=3 delims=: " %%H in ('sc query "MYSERVICE2" ^| findstr "        STATE"') do (
  if /I "%%H" NEQ "RUNNING" (
   NET START "MYSERVICE2"
  )
)
@echo off
echo Your services should now be started! 

@echo off

echo If any errors came up or you still cannot get into your software, be sure to give Tech Support a call at 1-800-xxx-xxxx. 

@echo off
echo To close this window:
pause

它们在没有运行时启动服务很好,但我想要

@echo off

echo现在应该启动您的服务了!

如果上一个命令最终因为“...由于登录失败”而导致1069错误错误,则返回不同的消息。有没有办法做到这一点?可能是通过查询错误?我是新手,所以我不确定我需要注意什么。

谢谢!

1 个答案:

答案 0 :(得分:0)

SC Start myservice | findstr /i /c:"1069" && Echo Service Failed

如果找不到文本,Findstr将返回非零错误级别。 &安培;&安培;仅在prev命令返回0时执行。

从MSDos 6.22帮助文件。

│The following list shows each exit code and a brief description of its
│meaning:
│
│0
│    The search was completed successfully and at least one match was found.
│
│1
│    The search was completed successfully, but no matches were found.
│
│2
│    The search was not completed successfully. In this case, an error
│    occurred during the search, and FIND cannot report whether any matches
│    were found.
│
│You can use the ERRORLEVEL parameter on the  command line in a batch
│program to process exit codes returned by FIND.
&    seperates commands on a line.

&&    executes this command only if previous command's errorlevel is 0.

||    (not used above) executes this command only if previous command's errorlevel is NOT 0

>    output to a file

>>    append output to a file

<    input from a file

|    output of one command into the input of another command

^    escapes any of the above, including itself, if needed to be passed to a program

"    parameters with spaces must be enclosed in quotes

+ used with copy to concatinate files. E.G. copy file1+file2 newfile

, used with copy to indicate missing parameters. This updates the files modified date. E.G. copy /b file1,,

%variablename% a inbuilt or user set environmental variable

!variablename! a user set environmental variable expanded at execution time, turned with SelLocal EnableDelayedExpansion command

%<number> (%1) the nth command line parameter passed to a batch file. %0 is the batchfile's name.

%* (%*) the entire command line.

%<a letter> or %%<a letter> (%A or %%A) the variable in a for loop. Single % sign at command prompt and double % sign in a batch file.