【问题标题】:batch process tasklist check not working批处理任务列表检查不起作用
【发布时间】: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


【解决方案1】:

所以最终的代码是:

@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 Studio2010\Projects\Projects2013\GEIndexParser\bin\Debug\GEIndexParser.exe"
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-28
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多