[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理怎样传递进程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
请教大家这样的批处理应该如何写?先谢谢了
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 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表示第几个参数
***共同提高***

TOP

本帖最后由 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
复制代码
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

感谢两位版主的热心帮助 因为有N个PID要放入这个格式 能不能在取得PID的情况下批量执行这个程序?
start Loader.exe PID Loader.dll

TOP

3楼的代码里,凡是 where "name like '%%qq%%'" 匹配出来的 pid 都是执行 start Loader.exe PID Loader.dll
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

5# hanyeguxing


版主你好 PID哪里只能是纯数字 我运行了不成功 有没有办法用Set /p num参数运行?

TOP

5# hanyeguxing


不知道为什么用这个代码获取的PID值不对 我的进程PID位4184 批处理获取的是41805 导致程序无法运行

TOP

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

已在3楼更新,处理了回车符的问题
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

1# zcdyj


get方法不要加/value参数

TOP

返回列表