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

我也发一个,这个代码能解决start命令调用的情况,但在start /b这种情况下会出现2个进程共用一个窗口,本来想结束一个进程,但这样就失去了start /b命令的原意,同时新窗口下要求pause的情况,所以也就没用处理,要真处理还真是个麻烦事!代码只在windows xp下测试过!
  1. @echo off&setlocal enabledelayedexpansion
  2. doskey /history|findstr .>nul
  3. if !errorlevel! equ 0 echo cmd命令调用执行&exit/b
  4. set str=
  5. for /l %%a in (1,1,10) do set str=!str!!random!
  6. if [%1]==[] (
  7.     start /b "" "%~nx0" !str!>nul
  8.     set com=echo.
  9. ) else (
  10.     set com=pause
  11. )
  12. !com!>nul
  13. for /f "skip=1 tokens=1,2" %%a in ('wmic process where "commandline='c:\\windows\\system32\\cmd.exe  /k "%~nx0"  !str!'" get processid^,parentprocessid') do (
  14.     set /a pid=%%b,ppid=%%a
  15. )
  16. taskkill /pid !pid! /t /f 1>nul 2>nul
  17. set pid=!ppid!
  18. for /f "skip=1" %%a in ('wmic process where "processid=!pid!" get parentprocessid') do set ppid=%%a
  19. for /f "skip=1" %%a in ('wmic process where "processid=!ppid!" get caption') do set name=%%a
  20. if /i !name!==explorer.exe echo windows操作界面执行&pause>nul&exit/b
  21. if /i !name!==cmd.exe echo cmd命令调用执行&exit/b
  22. echo !name!程序执行&exit/b
复制代码

TOP

返回列表