- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 .bat 脚本试图在最后启动 Windows 服务。
:start_wildfly
echo.
set /p wildfly_service_name="Enter Wildfly service name: "
echo INFO: Starting %wildfly_service_name%...
echo.
call net start "%wildfly_service_name%"
我希望能够解释 net start
的结果尝试让我的脚本在失败时采取适当的操作(例如,如果服务已经在运行,请重新启动它。如果服务名称无效,如果用户没有足够的名称,请再次提示输入名称特权,退出)。
问题是 NET 命令不返回记录的 Win32_Service class codes .
它确实会在控制台上显示错误,但是:
The requested service has already been started.
More help is available by typing NET HELPMSG 2182.
参见 http://ss64.com/nt/net_service.html获取错误列表。
不幸的是,errorlevel
变量总是 2
在这些错误情况下,所以我不能依赖它。
我现在要做的是运行 FIND
关于 NET
的输出命令,搜索特定的错误代码并根据它们采取行动。
net start Wildfly 2>&1 | FIND "2182"
if %errorlevel% equ 0 goto service_already_running
因此,FIND
的结果存储在 errorlevel
我可以检查一下 FIND
是否通过检查是否成功 errorlevel
是 0。这行得通。
现在,当我想检查多个错误代码时,问题就来了。例如,我不知道如何扩展上面的代码来检查“2185”,并在这种情况下转到不同的标签。
我现在正尝试存储 NET
的全部结果命令到变量中,然后运行 FINDSTR
在那个变量上。
setlocal EnableDelayedExpansion
set "output_cnt=0"
for /F "delims=" %%f in ('dir /b') do (
set /a output_cnt+=1
set "output[!output_cnt!]=%%f"
)
for /L %%n in (1 1 !output_cnt!) DO echo !output[%%n]!
这应该存储并回显输出的每一行,但是最后一行似乎没有做任何事情。
然后我还发现了一些应该在变量中搜索并返回是否找到该字符串的代码:
echo.%output%|findstr /C:"2182" >nul 2>&1 && echo Found || echo Not found.
虽然我没有运气把它们放在一起。我只想能够解释 NET START <SERVICE>
的结果并根据结果跳转到某些标签。
最佳答案
net start
尝试的结果so that I can have my script take the appropriate action if it fails (e.g. if the service is already running, restart it. If the service name is invalid, re-prompt for the name again, if the user doesn't have sufficient privileges, exit).
像您已经在做的那样启动服务:
net start "%wildfly_service_name%"
现在检查服务的状态。
有两种方法可以做到这一点。
再次使用net start
查看服务是否正在运行:
net start | find "%wildfly_service_name%" > nul
if errorlevel 1 echo The service is not running
使用sc
(服务控制)检查服务状态:
SC query %wildfly_service_name% | find "STATE" | find "STOPPED"
或者
sc query %wildfly_service_name% | find "STATE" | find "RUNNING"
如果未找到文本,以上两个语句将返回 %errorlevel%
= 1
。
关于windows - 从批处理脚本启动 Windows 服务并根据结果采取适当的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40187380/
这段代码在 Java 中的等价物是什么?我放了一部分,我对 I/O 部分感兴趣: int fd = open(FILE_NAME, O_WRONLY); int ret = 0; if (fd =
我正在尝试将维度为 d1,d2,d3 的张量 M[a1,a2,a3] reshape 为维度为 d2, d1*d3 的矩阵 M[a2,a1*a3]。我试过 M.reshape(d2,d1*d3) 但是
我是一名优秀的程序员,十分优秀!