检查应用程序是否已在运行或重新启动
我们可以检查并重新启动应用程序服务是否正在 SQL 中运行。也可以使用 SQL JOB 来完成此检查。该应用程序是用旧的 VB 编写的,并且失败了。它需要始终处于事件状态。因此,我们在 Application.exe 崩溃时运行它。
有没有办法检查 exe(即 Notepad.exe)是否正在运行,如果没有则重新启动。在 SQL 2005\windows 脚本中或我们使用另一个应用程序 (VB) 进行检查。
运行 SQL 脚本来检查 notepad.exe 是否正在运行并将结果记录在表中会很棒。
最佳答案
此批处理代码演示了如何使用任务列表来查明应用程序是否正在运行。
@echo off
for /F "skip=2" %%I in ('%SystemRoot%\System32\tasklist.exe /FI "IMAGENAME eq Notepad.exe" 2^>nul') do (
if /I "%%I" == "Notepad.exe" goto AppRunning
)
echo Notepad is not running.
goto :EOF
:AppRunning
echo Notepad is running.
有关所使用命令的详细信息,请打开命令提示符窗口,然后运行以下命令以获取窗口中每个命令输出的帮助以供阅读。
对于/?
转到/?
如果/?
任务列表/?
命令任务列表会生成 pretty-print 输出。如果可执行文件的文件名不是典型的 8.3 格式,而是更长,则列表中的可执行文件的文件名将被 chop 。
例如,tasklist 的输出是在德语 Windows XP 上
Abbildname PID Sitzungsname Sitz.-Nr. Speichernutzung
========================= ===== ================ ========== ===============
NotePad012345678901234567 3088 Console 0 1.984 K
使用命令行检查 NotePad012345678901234567890123456.exe
%SystemRoot%\System32\tasklist.exe /FI "IMAGENAME eq Notepad*"
注意:通配符*
用于图像名称过滤器规范。
可执行文件的长文件名被 chop 为 25 个字符。
以下批处理代码通过检查任何正在运行的应用程序的前 7 个字符是否为 Notepad
来解决 chop 问题。
@echo off
setlocal EnableDelayedExpansion
for /F "skip=2" %%I in ('%SystemRoot%\System32\tasklist.exe /FI "IMAGENAME eq Notepad*" 2^>nul') do (
set "ImageName=%%I"
if /I "!ImageName:~0,7!" == "Notepad" goto AppRunning
)
echo Sorry, but there is no Notepad* application running.
endlocal
goto :EOF
:AppRunning
echo There is a Notepad* application running.
endlocal
当然可以使用仅包含可执行文件名的前 25 个字符的第一批代码。
注意:两个批处理代码中使用的命令for仅将第三行开头到第一个空格或制表符的字符串分配给循环变量I
,这对于循环变量I
很重要知道可执行文件是否包含 1 个或多个空格字符。
关于javascript - 检查应用程序是否已经运行或重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31572909/