使用するファイルが一つ二つ程度なら問題ありませんが、さまざまな用途のファイルを使用してバックグラウンドでループ実行するようなものを使い始めるとタスクマネージャの表示がこんな感じになってきます。
イメージ名に「wscript.exe」がずらり。。

これではどれが何の処理を行っているのか分かりません。
編集中のプログラムがバグで無限ループしてしまったとか、そういう時に「プロセスの終了」でループを中断させたい場合などがありますが、そういう場合はCPU使用率が高いものを選んでみるとか、そんな感じでロシアンルーレットみたいな状態になってしまいます。
そのような事態を回避するために、バックグラウンドで常時起動しておくようなスクリプトファイルでは「wscript.exe」をコピーして別名保存して「任意の名前_wscript.exe」などにすると良いです。
今回は「wscript.exe」を一時フォルダに別名コピーして、処理終了後にそれを削除するところまで自動で行うサンプルを作成しました。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<package> | |
<job> | |
<script> | |
fs = new ActiveXObject('Scripting.FileSystemObject') | |
shell = new ActiveXObject('WScript.Shell') | |
exeファイル名 = fs.GetFileName(WScript.FullName).toLowerCase() | |
switch(exeファイル名){ | |
case 'wscript.exe': | |
case 'cscript.exe': | |
path = fs.GetSpecialFolder(2)+'/分かりやすい名前.exe' | |
fs.CopyFile(WScript.FullName, path) | |
WScript.Echo(path + ' "'+WScript.ScriptFullName+'"') | |
shell.run(path + ' "'+WScript.ScriptFullName+'"') | |
WScript.Quit() | |
} | |
WScript.Echo(exeファイル名) | |
shell.run('wscript "'+WScript.ScriptFullName+'" //job:後始末 '+WScript.FullName) | |
</script> | |
</job> | |
<job id="後始末"> | |
<script> | |
arg = WScript.Arguments | |
if(arg.length!=1){ WScript.Quit() } | |
fs = new ActiveXObject('Scripting.FileSystemObject') | |
fs.DeleteFile(arg(0)) | |
WScript.Echo(arg(0)) | |
</script> | |
</job> | |
</package> |
実行した結果、以下のように分かりやすい表示になりました。

0 件のコメント:
コメントを投稿