Board logo

标题: [系统相关] [已解决]如何在批处理中输入PID然后用NTSD结束进程? [打印本页]

作者: efaun    时间: 2009-11-13 23:46     标题: [已解决]如何在批处理中输入PID然后用NTSD结束进程?

请教一个关于在批处理中输入PID用NTSD结束进程的问题

原因是这样,我们学校有个联想传奇电子教室,每次一上课就给开开,进程名smss.exe(跟系统的那个一样),而且有进程保护,不能用taskkill,只能用NTSD,我自己可以结束,但我想转播给我们班的菜菜们用,又不想让他们知道是什么原理,就想用BAT做一个EXE。

例如:输入PID(假设1438),然后就后台运行ntsd -c q -p 1438  。我的问题只在于用户输入1438后,怎么转移到命令中去?=

[ 本帖最后由 efaun 于 2009-11-29 13:55 编辑 ]
作者: Batcher    时间: 2009-11-14 00:03

如果论坛的朋友们都知道如何实现,但是又不想让你知道是什么原理,怎么办?
作者: efaun    时间: 2009-11-14 13:54

麻烦给我这个菜菜贴出代码来啦……
作者: cmd520    时间: 2009-11-14 14:52

网上找XP双开3389的批处理,看了就会
作者: Seter    时间: 2009-11-14 15:49

建议先看下别的代码~
  1. set/ppid=请输入PID:
  2. ntsd -c q -p %pid%
复制代码

作者: efaun    时间: 2009-11-14 19:00

麻烦大大们给我看看有什么可以修改的?
  1. @echo off
  2. tasklist
  3. set /p pid=请输入PID:
  4. set /p time=请输入时间:
  5. at %time% ntsd -c q -p %pid%
  6. @pause
复制代码

作者: Seter    时间: 2009-11-14 19:14

  1. for /f "tokens=1,2" %%i in ('wmic process get name^,processid') do if %%i==smss.exe echo %%j
复制代码
可以找smss.exe的PID
作者: semiuel    时间: 2009-11-15 16:09     标题: 回复 1楼 的帖子

  1. @echo off
  2. title 立即关闭进程ID - exit退出
  3. mode con: cols=38 lines=3
  4. color 1f
  5. :begin
  6. cls
  7. set pid=
  8. echo.
  9. set /p pid= 请输入需要关闭的进程ID(PID):
  10. if "%pid%"=="" goto begin
  11. if "%pid%"=="exit" goto end
  12. set /a a=1/(%pid%1) 2>nul && echo. || goto begin
  13. echo 正在关闭进程: %pid%
  14. taskkill /f /pid %pid% >nul
  15. goto begin
复制代码
这是我写的用TASKKILL关闭进程的批处理.
作者: semiuel    时间: 2009-11-15 16:19

另外我问一下,NTSD有没有在运行时隐藏窗口的选项?
作者: efaun    时间: 2009-11-15 17:16

oooooooooooooooooooooooooooo

[ 本帖最后由 efaun 于 2009-11-29 13:57 编辑 ]
作者: yangjy612912    时间: 2009-11-15 17:22

这么长?
7楼写的不就可以了么?
  1. for /f "tokens=1,2" %%i in ('wmic process get name^,processid') do if %%i==smss.exe ntsd -c q -p %%j
复制代码

作者: efaun    时间: 2009-11-18 16:38

7楼的代码把系统的进程也结束了……好像我运行的时候是这样啊
作者: wanshu    时间: 2009-11-18 21:40

7楼的思路是使用WMIC 调用进程中的SMSS.exe进程来走的。不是通过PID值来实现的
作者: semiuel    时间: 2009-11-19 09:23

楼主的标题是"在批处理中输入PID然后用NTSD结束进程",我觉得我在8楼的回复应该可以.
作者: efaun    时间: 2009-11-20 17:15

怎么用批处理实现找出某个PID范围呢?
就是说有两个smss.exe 一个PID400 一个1400,怎样设置范围>400呢?
作者: lxzzr    时间: 2009-11-20 17:49     标题: 回复 15楼 的帖子

这样:
  1. wmic process where "processid>400" get name
复制代码





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