【发布时间】:2013-11-25 17:31:30
【问题描述】:
我之前发布过这个,但当时它似乎有效,但我现在发现它不是。
我正在尝试检查某些进程是否正在运行,如果没有,它应该启动该进程的新实例。该进程是一个必须运行的 .NET 程序。
@echo off
tasklist /FI "IMAGENAME eq GEIndexParser.exe" | find /I "GEIndexParser.exe">
nul &&(
echo PROCESS GEIndexParser.exe IS ALREADY RUNNING!
)||(
echo GEIndexParser.exe IS NOT RUNNING! STARTING THE NEW PROCESS!
cmd /c start "ETPARSER" "C:\Users\me\Documents\
Visual Studio 2010\Projects\Projects2013\
GEIndexParser\bin\Debug\GEIndexParser.exe"
)
谁能看出这有什么问题?
顺便说一句,我试图在 Windows Server 2008 机器上运行它,当我在计划任务中设置作业时它确实运行,但没有看到现有进程正在运行并仍在执行它。这会导致大量进程实例运行。
感谢对语法的评论建议,我稍微修改了一下
tasklist /FI "IMAGENAME eq GEIndexParser.exe" | find /I "GEIndexParser.exe">nul &&(
echo PROCESS GEIndexParser.exe IS ALREADY RUNNING!)
pause
||
(
echo GEIndexParser.exe IS NOT RUNNING! STARTING THE NEW PROCESS!
cmd /c start "ETPARSER" "C:\Users\me\Documents\
Visual Studio2010\Projects\Projects2013\GEIndexParser\bin\Debug\GEIndexParser.exe"
)
现在似乎可以工作了。
【问题讨论】:
-
请删除任务列表后的行尾 /FI "IMAGENAME eq GEIndexParser.exe" |找到 /I "GEIndexParser.exe"> 并判断它是否有效。
-
我不确定是否是这样,因为我在发帖时添加了 endofline,但删除了任何额外的空格,现在似乎没问题。谢谢
-
也想添加这个;对我有用;更改命令行窗口标题 ---> TITLE 新标题
标签: visual-studio-2010 batch-file windows-server-2008 batch-processing