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

[系统相关] 批处理怎样判断进程名长度及所在路径?

有个需求需实现:
有很多进程,其文件所在路径为c:\a目录,其中有几个6位数的进程名,如binju2.exe, ftu86h.exe等,这些进程名都是固定的,但唯一有一个6位数的进程名是随机的,我想判断这个随机的进程是否存在,如果存在就执行其他操作。
思路:检测当前进程,计算进程名长度,如果发现进程名长度为10 (6+4 ,4为.exe)的进程,则判断该进程文件所在目录是否为c:\a,最后需排除c:\a目录下其他的几个固定6位数的进程名。
求这样一段代码,感谢!

  1. @echo off
  2. for /f "skip=1 delims=" %%a in ('wmic process where "name like '__________'" get executablepath') do call :sub "%%~dpa" %%~nxa
  3. pause
  4. :sub
  5. if exist C:\%2 (
  6. echo.已在指定目录中进程:%2
  7. ) else (
  8. echo.未在指定目录中进程:%2
  9. )
  10. goto :eof
复制代码
最后需排除c:\a目录下其他的几个固定6位数的进程名。你怎么排除???

TOP

本帖最后由 andyrave 于 2011-4-11 20:32 编辑
  1. @echo off & setlocal enableDelayedExpansion
  2. for /f "delims=" %%a in ('wmic process get commandline 2^>nul ^|findstr /I /c:"c:\a\aaaaaa.exe"') do (
  3. if errorlevel 0 (echo 找到指定程序&pause>nul) else (echo 没有找到指定程序&pause>nul)
  4. )
复制代码
测试环境:WINDOWS 8 64Bit
如系统环境不同,请自行修改 :)

TOP

本帖最后由 lxzzr 于 2011-4-11 20:41 编辑

commandline???,另外,这样过滤肯怕不严格吧?

TOP

本帖最后由 hanyeguxing 于 2011-4-11 21:01 编辑

定义固定进程名例如"ctfmon.exe"为变量
设定检查目录为c:\windows\system32\
获得多出的进程conime.exe
  1. @echo off
  2. set ""ctfmon.exe"=="
  3. for /f "skip=1 delims=" %%a in ('wmic process where "name like '______.exe'" get executablepath') do if exist "c:\windows\system32\%%~na.exe" if not defined "%%~na.exe" set "a=%%~na.exe"
  4. if defined a (echo 存在多出的%a%) else echo 不存在多出
  5. pause
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表