2012-02-23 38 views
1

exeファイルが実行された後に作成されたバッチファイルを削除するスクリプトを作成しました。これは、クイックbfcでコンパイルされたものです。存在しない。問題は、それがそれ自身を削除し、2つのプロセス、すなわちselfとxxx.exeを終了することです。私の目的は、プロセスが存在するかどうかを2秒ごとにチェックするループを通過することです。プロセスがもう実行されていない場合は、有効なファイルのh属性が%temp%フォルダ内で削除され、%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.dot のようなメニューを提供する。

答えて

0

VBScriptとバッチスクリプトを混在させるのはちょっと奇妙だと思われます。これは、1つの技術で問題を効果的に解決していないためです。おそらく、ソリューション全体を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" 
+0

ありがとうございます、ありがとう、私はこのためのバッチでソリューションを好むでしょう。 – 5452

関連する問題