yyz2191958 发表于 2023-9-26 07:48:05

【已解决】求脚本(bat、vbs、wcs 都行):PE下 检测新增同名进程,谢谢

本帖最后由 yyz2191958 于 2023-10-6 15:58 编辑

问题解决了:(附件:排版助手(!检测进程版-通用).rar很好)
::作用:1.【启动-排版助手.exe】2.【无“排版助手.exe”进程退出。大于1个进程,结束“排版助手.exe”进程】
@echo off
::【隐藏批处理窗口】
CMDOW.EXE @ /HID
::***********【下面写要运行的代码】***************
start "" "%~dp0排版助手.exe"
::************************************************
::【检测(是否在PE中运行),是向下运行,否跳到:Q】
if not exist "X:\windows\"   goto :Q
::************************************************
:A
::【检"排版助手.exe"进程,无(等于小于0)往下,有(大于0)到:B】
for /f %%a in ('taskn.exe 排版助手.exe') do if %%a gtr 0 goto :B
exit


:B
::************************************************
::【(等于小于1个进程,往下)(大于1个进程,跳到 :C)】
for /f %%a in ('taskn.exe 排版助手.exe') do if %%a gtr 1 goto :C
ping -n 3 127.0.0.1 >nul
goto :A


:C
X:\Windows\System32\Pecmd.exe kill 排版助手.exe


:Q
exit


*******************************************
原来的问题:
求脚本(bat、vbs、wcs 都行):PE下检测新增同名进程,谢谢
***************************************************
一、需要检测的进程:Notepad2.exe
二、需求:
1.原来可能有一个或者两个,也可能是三个Notepad2.exe进程
2.在1的条件下,如果再增加一个Notepad2.exe进程,跳转到:A(结束Notepad2.exe进程,并退出)
3.在1的条件下,如果没有新增Notepad2.exe进程,则过2秒继续检测(循环)

*************************************************************
附之前的一个bat(正常系统中能够使用,PE下 不行【黑框,检测不到新增】):


@echo off

for /f %%a in ('tasklist ^| find/c /i "Notepad2.exe"') do (
set "ProcNum=%%a"
)

:B
cls
for /f %%a in ('tasklist ^| find/c/i "Notepad2.exe"') do (
if %%a gtr %ProcNum% (
goto :A
)
)
ping -n 3 127.0.0.1 >nul

goto :B

:A
echo Hello
pause






nttwqz 发表于 2023-9-26 08:33:20

这是要干嘛?

9zhmke 发表于 2023-9-26 08:44:46

可能是PE里没有find.exe,改改判断语句吧:
setlocal enabledelayedexpansion
for /f %%a in ('tasklist ') do (
        if %%a==Notepad2.exe set /a num=!num! + 1
        )
echo %num%

yyz2191958 发表于 2023-9-26 08:47:18

9zhmke 发表于 2023-9-26 08:44
可能是PE里没有find.exe,改改判断语句吧:

我试一试先 谢谢

yyz2191958 发表于 2023-9-26 08:51:10

9zhmke 发表于 2023-9-26 08:44
可能是PE里没有find.exe,改改判断语句吧:

ECHO 处于关闭状态。

yyz2191958 发表于 2023-9-26 09:13:23

下面的也不行:
@echo off
setlocal enabledelayedexpansion

:B
for /f %%a in ('tasklist ') do (
      if %%a==Notepad2.exe set /a num=!num! + 1
goto :A      )

ping -n 2 127.0.0.1 >nul

goto :B
:A
echo %num%
pause>nul 2>nul

BEIKING 发表于 2023-9-26 09:37:34

应该是支持tasklist的PE少,find.exe 还好解决

yc2428 发表于 2023-9-26 09:54:00

学习

yyz2191958 发表于 2023-9-26 10:06:46

BEIKING 发表于 2023-9-26 09:37
应该是支持tasklist的PE少,find.exe 还好解决

find.exe——PE 里面有

tasklist——我从正常系统中复制 到 PE中了

softwarezheng 发表于 2023-9-26 11:11:58

谢谢

yyz2191958 发表于 2023-9-26 12:39:09

nttwqz 发表于 2023-9-26 08:33
这是要干嘛?

检测的进程:Notepad2.exe————是假设

这个功能我需要

9zhmke 发表于 2023-9-26 15:10:39

本帖最后由 9zhmke 于 2023-9-26 15:14 编辑

yyz2191958 发表于 2023-9-26 08:51
ECHO 处于关闭状态。
加一行赋值:
setlocal enabledelayedexpansion
set num=0
for /f %%a in ('tasklist ') do (
      if %%a==Notepad2.exe set /a num=!num! + 1
      )
echo %num%
pause
另外,请注意你的文件名Notepad2.exe中的字母大小写必须相符

yyz2191958 发表于 2023-9-26 15:14:30

9zhmke 发表于 2023-9-26 15:10
加一行赋值:

我试一试先 谢谢

yyz2191958 发表于 2023-9-26 15:23:10

9zhmke 发表于 2023-9-26 15:10
加一行赋值:

另外,请注意你的文件名Notepad2.exe中的字母大小写必须相符

已经有了3个 Notepad2.exe进程
运行代码以后是:

szwp 发表于 2023-9-26 15:27:46

先去cmd手工运行tasklist看有没列出来

yyz2191958 发表于 2023-9-26 15:32:32

本帖最后由 yyz2191958 于 2023-9-26 15:37 编辑

szwp 发表于 2023-9-26 15:27
先去cmd手工运行tasklist看有没列出来
cmd手工运行tasklist————是不是下图一样运行?

szwp 发表于 2023-9-26 15:34:47

和系统下运行的结果比较一下,可以多换几个pe试试

yyz2191958 发表于 2023-9-26 16:03:51

szwp 发表于 2023-9-26 15:34
和系统下运行的结果比较一下,可以多换几个pe试试

不想换 pe

szwp 发表于 2023-9-26 16:33:21

yyz2191958 发表于 2023-9-26 16:03
不想换 pe

先得知道tasklist的正确结果是什么

yyz2191958 发表于 2023-9-26 17:12:00

szwp 发表于 2023-9-26 16:33
先得知道tasklist的正确结果是什么

好的 我去正常系统试一试

nttwqz 发表于 2023-9-26 17:15:57

yyz2191958 发表于 2023-9-26 15:32
cmd手工运行tasklist————是不是下图一样运行?

看起来是tasklist不正常

yyz2191958 发表于 2023-9-26 17:24:42

nttwqz 发表于 2023-9-26 17:15
看起来是tasklist不正常

确实是这样:

wxinchun92 发表于 2023-9-26 17:58:07

nttwqz 发表于 2023-9-26 08:33
这是要干嘛?

防止多开?

nathan6498 发表于 2023-9-26 19:29:35

学习学习

yyz2191958 发表于 2023-9-26 19:40:53

wxinchun92 发表于 2023-9-26 17:58
防止多开?

非也

batche 发表于 2023-9-26 21:54:06

写了个小程序,pan.baidu.com/s/1_84dug1V1y6WNOa_Q6OyYw?pwd=p760
用法taskn.exe Notepad2.exe,返回同名进程个数,
没记错的话这是我第二次给你写程序了。

batche 发表于 2023-9-26 22:01:40

按你的代码修改一下
@echo off
:B
for /f %%a in ('taskn.exe Notepad2.exe') do if %%a gtr 1 goto :A
ping -n 3 127.0.0.1 >nul
goto :B

:A
echo Hello
pause

yyz2191958 发表于 2023-9-26 22:53:49

batche 发表于 2023-9-26 21:54
写了个小程序,pan.baidu.com/s/1_84dug1V1y6WNOa_Q6OyYw?pwd=p760
用法taskn.exe Notepad2.exe,返回同名 ...

辛苦了 谢谢

yyz2191958 发表于 2023-9-26 22:54:22

batche 发表于 2023-9-26 22:01
按你的代码修改一下

我试一试 谢谢

yyz2191958 发表于 2023-9-26 23:03:08

batche 发表于 2023-9-26 21:54
写了个小程序,pan.baidu.com/s/1_84dug1V1y6WNOa_Q6OyYw?pwd=p760
用法taskn.exe Notepad2.exe,返回同名 ...

成功了再次感谢
页: [1] 2
查看完整版本: 【已解决】求脚本(bat、vbs、wcs 都行):PE下 检测新增同名进程,谢谢