[VBScript] 差し替えに対応した無限ループ

どーもボキです。

vbsは実行中のスクリプトでも差し替え可能なんです

[VBScript] 自分自身を削除するスクリプトが便利で紹介したように、vbsは実行しながら自分自身のスクリプトを削除できます。削除できるということは差し替えにも対応できる、となります。

このサンプルでは、自分自身が更新されたら再起動する無限ループを紹介します。

利用シーンとしては、サーバ等でこの仕組みを作った無限ループを実行させつつ、必要ならばネットワーク上から差し替えできる、となります。

無限ループの仕組みをexeで実現していた場合、サーバにログインして実行プロセスを停止するといった操作が必要となります。その手間が不要になるので、オススメです。


サンプルプログラムのダウンロードと使い方

  • ダウンロード
  • 使い方は、実行する、だけ。
    実行中にスクリプトファイルを更新すると、更新したスクリプトを再起動します。
    [VBScript] 差し替えに対応した無限ループ_a0021757_23221788.gif


今回開発したプログラムソース


SetScriptHost "cscript"

Set objWS = CreateObject("WScript.Shell")
Set objFS = CreateObject("Scripting.FileSystemObject")

now0 = Now()
dt0 = objFS.GetFile(WScript.ScriptFullName).DateLastmodified
Do
If dt0 < objFS.GetFile(WScript.ScriptFullName).DateLastmodified Then
objWS.Run "cscript //nologo """ & WScript.ScriptFullName & """"
WScript.Quit
End If

WScript.Sleep 1000
s = DateDiff("s", now0, Now)
WScript.Echo s
Loop Until 0

WScript.Echo "[END]"
WScript.StdIn.ReadLine
' ============================================================================



' ----------------------------------------------------------------------------
' 実行ホストを切り替える
' ----------------------------------------------------------------------------
Sub SetScriptHost(HostName)
If InStr(LCase(WSCript.FullName), LCase(HostName)) <> 0 Then Exit Sub
Dim i,s
s = HostName & " //nologo """ & WScript.ScriptFullName & """"
If WScript.Arguments.Count > 0 Then
For i = 0 To WScript.Arguments.Count -1
s = s &" """ & WScript.Arguments.Item(i) & """" ' 引数
Next
End If
CreateObject("WScript.Shell").Run s
WScript.Quit
End Sub


にほんブログ村 IT技術ブログへ
にほんブログ村

名前
URL
削除用パスワード
by yozda | 2022-02-18 07:00 | ボキ、しごとのヒント集める | Comments(0)

ボキの興味、書き散らかします


by ボキ
カレンダー
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31