批处理脚本无法正常工作
问题描述:
我写过一个脚本来删除一旦exe文件执行后创建的批处理文件,它是用快速bfc编译的,因为它不通过它自己来完成,包含源代码一旦进程是不存在的。问题是它删除它自己并结束两个进程,它的self和xxx.exe。我的目标是通过循环检查每2秒是否存在过程。如果进程不再运行,它会删除%temp%文件夹中启用的任何可能文件的h属性,然后删除%temp%文件夹中的所有文件。如果是,它会再次检查是否存在xxx.exe。批处理脚本无法正常工作
@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.S 增加,因为成功的第一次尝试没有任何工作转到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"
谢谢你,会测试,但我宁愿为此批量解决方案。 – 5452 2012-02-23 12:29:33