在批量变量中不打印

时间:2016-05-01 13:42:22

标签: windows batch-file

我正在写一个批处理文件来杀死给定进程ID的所有依赖进程。我还没有完成我的代码。现在我的代码是

set cmd="wmic process where (ParentProcessId=4192) get ProcessId"
FOR /F %%i IN (' %cmd% ') DO ( 
SET X=%%i 
echo The process is %X%
)

" wmic进程的输出,其中(ParentProcessId = 4192)得到ProcessId"命令是:

ProcessID
3516
<blank space>

批量设置X = ProcessID,3516和空格。 问题1:对于上面的代码,它没有显示X的值(在echo中)。 问题2:我想要那些是整数

的%% i

1 个答案:

答案 0 :(得分:0)

你可以尝试这样的事情:

@echo off
set cmd="wmic process where (ProcessId=4192) get ParentProcessId"
Setlocal EnableDelayedExpansion
FOR /F "skip=1 delims=" %%i IN ('%cmd%') DO ( 
    SET X=%%i 
    echo The process is !X!
)
pause
echo The process is %X%
EndLocal
pause

为什么你不使用Taskkill命令和param /T来终止指定的进程和由它启动的任何子进程?