Taskkill 使用 WMIC 和环境变量存在于特定路径中的进程

Posted

技术标签:

【中文标题】Taskkill 使用 WMIC 和环境变量存在于特定路径中的进程【英文标题】:Taskkill a Process present in a specific path using WMIC and a Environment Variable 【发布时间】:2021-12-22 01:04:44 【问题描述】:

我正在尝试使用 %appdata% 变量关闭位于特定目录中的 exe 进程,但它不起作用。

WMIC Process Where "ExecutablePath='%APPDATA%\\Adobe\\screenrecorder.exe'" Call Terminate

如果我尝试在没有%appdata% 的情况下关闭进程,它会按预期工作。

WMIC Process Where "ExecutablePath='C:\\Users\\Admin\\AppData\\Roaming\\Adobe\\screenrecorder.exe'" Call Terminate

必须使用%appdata% 才能工作,有人知道如何使用%appdata%? 关闭exe 文件

【问题讨论】:

【参考方案1】:

您应该已经注意到,路径中的反斜杠需要在 WMIC 的 WHERE 子句中转义,因此您只需扩展环境变量,并将反斜杠替换为转义的反斜杠。这样做的一般方法是%VariableName:CharToSubstitute=SustitutionChars%

WMIC Process Where "ExecutablePath='%AppData:\=\\%\\Adobe\\screenrecorder.exe'" Call Terminate

或者更强大

%SystemRoot%\System32\wbem\WMIC.exe Process Where "ExecutablePath='%AppData:\=\\%\\Adobe\\screenrecorder.exe'" Call Terminate

【讨论】:

【参考方案2】:

使用批处理文件,您可以这样尝试:

@echo off
Title Kill Application using WMIC
Set Application=%AppData%\Adobe\screenrecorder.exe
Call :Add_backSlash %Application%
echo %Application%
pause
WMIC Process Where "ExecutablePath='%Application%'" Call Terminate
pause
EXIT
::---------------------------------------------------------------------
:Add_backSlash <String>
Rem Subroutine to replace the simple "\" by a double "\\" into a String
Set "Application=%1"
Set "String=\"
Set "NewString=\\"
Call Set "Application=%%Application:%String%=%NewString%%%"
Exit /b
::---------------------------------------------------------------------

【讨论】:

以上是关于Taskkill 使用 WMIC 和环境变量存在于特定路径中的进程的主要内容,如果未能解决你的问题,请参考以下文章

dos 与 进程

如何杀死一个无法杀死的任务?

WMIC + Python 子进程/ (Windows 10)

Windows WMIC命令使用详解(附实例)

Windows WMIC命令使用详解(附实例)

wmic文件怎么使用