首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WMIC流程列表,然后终止?

WMIC流程列表,然后终止?
EN

Stack Overflow用户
提问于 2015-11-06 17:55:42
回答 1查看 5.9K关注 0票数 0

编辑 @aschipfl -你的反应是完美的!答案在下面。

历史..。为什么要这样做呢? 99.9%的情况下,我们只需执行以下操作:

代码语言:javascript
复制
WMIC service where "name like 'tomcat%%'" CALL stopservice

而且效果很好。然而,有一次,我们会让Tomcat留在记忆中,而不是停止。所以我们必须终止它。我必须添加“签名”文件,从我们的供应商在每月一次在大约40个服务器,我必须100%肯定,我能够这样做,没有问题。我们的大部分问题似乎都与Tomcat7和JDK7有关,它们都有一些内存调整。

我的批处理脚本中有以下内容,这两个脚本都很不错。

代码语言:javascript
复制
WMIC Path win32_process WHERE "CommandLine Like '%%tomcat%%'" CALL Terminate
WMIC Path win32_process WHERE "CommandLine Like '%%java%%'" CALL Terminate

但是,我确实不希望终止tomcat6w.exe或tomcat7w.exe。我真正想做的是终止tomcat?.exe,而不是终止: tomcat?w.exe

当我尝试以下操作时,我刚刚杀死了我的服务器!

代码语言:javascript
复制
WMIC service where "name like 'tomcat%%'" get processid | WMIC Path win32_process WHERE "processid = processid" CALL Terminate

我想我能做到以下几点,但还没有发挥作用:

代码语言:javascript
复制
for /F "skip=1" %%a in ('WMIC service where "name like 'tomcat%%'" get processid') do set pid=%%a
WMIC Path win32_process WHERE "processid = %pid%" CALL Terminate

但是,由于我正在使用tomcat执行通配符,我认为它增加了一个额外的传输返回。

裁判..。我确实在这里找到了一些有趣的信息:http://www.dostips.com/forum/viewtopic.php?f=3&t=3815

希望这有意义?

答案

代码语言:javascript
复制
FOR /F "skip=1" %%a IN ('WMIC service where "name like 'tomcat%%'" get processid') DO (
FOR /F "delims=" %%b IN ("%%a") DO SET pid=%%b
)
WMIC Path win32_process WHERE "processid = %pid%" CALL Terminate
pause

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-07 19:54:54

额外的回车来自wmic命令(独立于您是否使用通配符)。wmic输出Unicode文本,for /F对ASCII的转换并不完美。

要摆脱额外的回车,只需包装另一个for /F循环:

代码语言:javascript
复制
for /F "skip=1" %%a in ('WMIC service where "name like 'tomcat%%'" get processid') do for /F "delims=" %%b in ("%%a") do set pid=%%b

因此,变量pid包含纯进程ID值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33572795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档