Board logo

标题: [文本处理] [已解决]批处理怎样传递进程PID? [打印本页]

作者: zcdyj    时间: 2011-5-1 21:08     标题: [已解决]批处理怎样传递进程PID?

本帖最后由 zcdyj 于 2011-5-2 18:29 编辑

这个是获取进程PID的代码
@echo off
wmic process where (name like '%%kk%%') get processid /value

运行这个以后会得到例如ProcessId=985或其他数字

有一个程序需要调用上面的PID
请教如何把上面的PID自动传递到下面的这个批处理中

Set /p num=输入PID:
start Loader.exe %num% Loader.dll

例如我运行了第一个批处理得到结果是ProcessId=880和ProcessId=998和ProcessId=820和ProcessId=966和....
怎样把第一个批处理取得的PID传递到第二个批处理中
即运行批处理结果是
start Loader.exe 880 Loader.dll
start Loader.exe 998 Loader.dll
start Loader.exe 820 Loader.dll
start Loader.exe 966 Loader.dll
start Loader.exe (上面获取的PID) Loader.dll
请教大家这样的批处理应该如何写?先谢谢了
作者: batman    时间: 2011-5-1 21:20

本帖最后由 batman 于 2011-5-1 21:24 编辑

不知道用参数传递?
a.bat中
call b.bat 获取的进程pid
可以每次传递1个,也可以一次将9个以内的pid传递给b.bat

b.bat
start Loader.exe %n Loader.dll
n表示第几个参数
作者: hanyeguxing    时间: 2011-5-1 21:30

本帖最后由 hanyeguxing 于 2011-5-2 13:23 编辑
  1. @echo off
  2. for /f "tokens=1* delims==" %%a in ('wmic process where "name like '%%qq%%'" get processid /value') do if not "%%b"=="" call:a %%b
  3. exit
  4. :a
  5. start Loader.exe %1 Loader.dll
复制代码

作者: zcdyj    时间: 2011-5-1 21:55

感谢两位版主的热心帮助 因为有N个PID要放入这个格式 能不能在取得PID的情况下批量执行这个程序?
start Loader.exe PID Loader.dll
作者: hanyeguxing    时间: 2011-5-1 22:27

3楼的代码里,凡是 where "name like '%%qq%%'" 匹配出来的 pid 都是执行 start Loader.exe PID Loader.dll
作者: zcdyj    时间: 2011-5-2 00:21

5# hanyeguxing


版主你好 PID哪里只能是纯数字 我运行了不成功 有没有办法用Set /p num参数运行?
作者: zcdyj    时间: 2011-5-2 00:45

5# hanyeguxing


不知道为什么用这个代码获取的PID值不对 我的进程PID位4184 批处理获取的是41805 导致程序无法运行
作者: hanyeguxing    时间: 2011-5-2 08:32

本帖最后由 hanyeguxing 于 2011-5-2 13:17 编辑

已在3楼更新,处理了回车符的问题
作者: lxzzr    时间: 2011-5-2 12:48

1# zcdyj


get方法不要加/value参数




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2