2019年02月07日

VBScriptファイル入出力サンプル

VBScriptでファイルの入出力を行います。
'VBScriptファイル入出力サンプル
'作業フォルダ
Const WORKFOLDER = "C:\work"

' ファイルシステムオブジェクト
Set fso = CreateObject("Scripting.FileSystemObject")
' フォルダ存在チェック
If Not fso.FolderExists(WORKFOLDER) Then WScript.Quit

'入力ファイル
Dim inpFile
Set inpFile = fso.OpenTextFile(WORKFOLDER & "\" & "inputsample.txt", 1)

' 入力ファイルから一行ずつ読み込み
Do While Not inpFile.AtEndOfLine
' 一行読み込み
readLine = inpFile.ReadLine

' 読み込みデータ表示
Wscript.echo readLine

'無限ループ防止
If Err.Number <> 0 Then WScript.Quit
Loop

'ファイルを閉じる
inpFile.Close

'出力ファイル
Dim outFile
Set outFile = fso.CreateTextFile(WORKFOLDER & "\" & "outputsample.txt", 1, true)

' 出力ファイルへ一行ずつ書き込み
Dim i
For i = 100 To 120
outFile.WriteLine(CStr(i))
Next

'ファイルを閉じる
outFile.Close
タグ:VBScript
posted by Hiro at 21:42| Comment(1) | プログラム

VBScript 独自のClass

独自のClassを定義して使用するサンプルです。
' VBScript 独自のClass
Class MyClass
' 名前
private name
' 年齢
private age

' コンストラクタ
Public Sub Class_Initialize()
'引数付きコンストラクタはできません
WScript.echo "コンストラクタ"
End Sub
' デストラクタ
Public Sub Class_Terminate()
WScript.echo "デストラクタ"
End Sub

' 初期設定用サブルーチン
Public Default Sub setData(ByVal argName, ByVal argAge)
name = argName
age = argAge
End Sub

' 名前を返す
Public Property Get getName
getName = Name
End Property
' 年齢を返す
Public Property Get getAge
getAge = Age
End Property
End Class
呼び出し例
'独自のClass使用例
Dim mycls
Set mycls = New MyClass
Call mycls("太郎",25)
WScript.echo mycls.getName & " " & mycls.getAge

タグ:VBScript
posted by Hiro at 21:40| Comment(2) | プログラム

VBScript 二重起動抑制とバッチ雛形

VBScript 二重起動抑制とバッチ雛形です。
'◆メイン処理呼び出し
Call CheckDualExec()
Call Main()

'◇メイン処理
Sub Main()
'ここにメインの処理を記述
Call Msgbox ("メッセージ表示中")
'メイン処理終了
Exit Sub
End Sub

'◇二重起動抑制
Sub CheckDualExec
Dim objSWbemLocator
Dim objServices
Dim objProcess
Dim objProcesses
Dim first
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objServices = objSWbemLocator.ConnectServer(".", "root\cimv2")
Set objProcesses = objServices.ExecQuery("SELECT * FROM Win32_Process")
first = False
For Each objProcess In objProcesses
If WScript.FullName = objProcess.ExecutablePath Then
If Instr( objProcess.CommandLine , WScript.ScriptFullName ) > 0 Then
If Not first Then
first = True
Else
'プロセス終了
WScript.Quit
End If
End If
End If
Next
End Sub

タグ:VBScript
posted by Hiro at 21:34| Comment(1) | プログラム