File 批处理脚本无法正常工作
我已经编写了一个脚本来删除执行exe文件后创建的批处理文件,该文件是用quick bfc编译的,因为它不是自己完成的,在进程不存在时包含源代码。问题是它删除了self,并结束了self和xxx.exe两个进程。我的目标是让它每2秒钟检查一次流程是否存在。如果进程不再运行,它将删除%temp%文件夹中任何可能启用该进程的文件的h属性,然后删除%temp%文件夹中的所有文件。如果确实存在,则再次执行相同的过程,检查xxx.exe是否存在File 批处理脚本无法正常工作,file,batch-file,File,Batch File,我已经编写了一个脚本来删除执行exe文件后创建的批处理文件,该文件是用quick bfc编译的,因为它不是自己完成的,在进程不存在时包含源代码。问题是它删除了self,并结束了self和xxx.exe两个进程。我的目标是让它每2秒钟检查一次流程是否存在。如果进程不再运行,它将删除%temp%文件夹中任何可能启用该进程的文件的h属性,然后删除%temp%文件夹中的所有文件。如果确实存在,则再次执行相同的过程,检查xxx.exe是否存在 @echo off start xxx.exe :A task
@echo off
start xxx.exe
:A
tasklist 2>nul | find "xxx.exe" 1>nul
if not ErrorLevel 1 (
echo Wscript.Sleep 2000> %temp%\sleep.vbs
start /w wscript.exe %temp%\sleep.vbs
del %temp%\sleep.vbs /f /q
goto A
) else (
Goto B
)
:B
attrib -h %temp%\*.*
del %temp%\*.* /f /q
exit
p、
添加了goto B部分,因为第一次尝试成功也没有成功。
请记住,当xxx.exe启动时,它将使用在%temp%文件夹中创建的批处理文件,因此,如果xxx.exe终止,它仍将能够正常工作,因此只保留cmd.exe处于活动状态。
用于检查进程是否存在的脚本显然不可见。
启动的批处理文件提供了菜单的功能,例如1。做xxx吗
2.sddd
.混合使用
VBScript
和批处理脚本似乎有点奇怪,因为您无法用一种技术有效地解决问题。也许,如果您将整个解决方案迁移到VBScript
,您会有一个更优雅的解决方案
Option Explicit
Const WS_SHOW = 1
Dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.Run "xxx.exe", WS_SHOW, True
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile "xxx.exe"
谢谢,我会测试,但我更喜欢批量解决方案。