Pat*_*k S 4 newline batch-file wmic
我需要使用WMIC命令找到进程PID,然后使用taskkill终止此进程.我几乎实现了这一点,但唯一的问题是PID变量的结尾有一个换行符.到目前为止我做了这个:
c:\patryk>for /F "skip=1 tokens=*" %a in ('wmic process where "CommandLine like '%sourceprocessor%' and name like '%java%'" get ProcessId') do taskkill /pid | set /p pid=%a
Run Code Online (Sandbox Code Playgroud)
所以这是循环wmic的输出,包含3行:title(ProcessId),找到PID(一个数字)和一个空行.我正在跳过第一线,因为它只是标题.现在我要杀死在第二行找到pid的进程.并且有一个问题,它在行尾有一个换行符,所以整个命令不起作用.任何人都可以给我一些建议我怎样才能实现这一目标?如何删除此换行符?
for /F "skip=2 tokens=2 delims=," %a in (
'wmic process where " .... " get ProcessID^,Status /format:csv'
) do taskkill /pid %a
Run Code Online (Sandbox Code Playgroud)
现在你有一个来自wmicaditional行的输出(从这里跳过),字段用逗号(delim)分隔,并包括三个字段:自动添加的节点(computername),processid(第二个)令牌)和最终状态字段,不会被使用,但允许我们检索行中没有结束CR的第二个令牌
或者您可以for在初始行添加aditional 命令
for /f ... %a in ( ... ) do for %b in (%a) do taskkil /pid %b
Run Code Online (Sandbox Code Playgroud)
此附加for循环将从%a中检索到的wmic数据中删除CR字符.