リファレンス

各処理

文字列処理

パスからファイルの拡張子を除いた文字列を返す関数

Function RemoveExtension(sPath)
    Dim sExt, sFileName
	
    Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
    sFileName = objFSO.GetFileName(sPath)
    sExt = objFSO.GetExtensionName(sPath)
	
    RemoveExtension = Replace(sPath, sFileName, Replace(sFileName, "."&sExt, ""))
End Function

プログラム実行

引数で渡されたコマンドを実行し、終了コードを返す関数

Const DEBUG_MODE = true

'コマンド実行
Function ExecCommand(sCommand)
	Set objShell = WScript.CreateObject("WScript.Shell")
	
	If DEBUG_MODE Then
		WScript.Echo sCommand
		'イベントログ:アプリケーションに書き出し
		objShell.LogEvent INFORMATION, "transcode: " & sCommand
	End If
	
	Set objExec = objShell.Exec(sCommand)
	'実行終了まで待つ
	Do While objExec.Status = 0
		WScript.Sleep 100
	Loop
	
	sStdOut = ""
	Do Until objExec.StdOut.AtEndOfStream
		sStdOut = objExec.StdOut.ReadLine
	Loop
	WScript.StdOut.Write sStdOut
	
	If objExec.ExitCode <> 0 Then
		sStdErr = ""
		Do Until objExec.StdErr.AtEndOfStream
			sStdErr = objExec.StdErr.ReadLine
		Loop
		WScript.StdErr.Write sStdErr
	End If
	
	'WScript.Quit(objExec.ExitCode)
	ExecCommand = objExec.ExitCode
End Function

パラメーターの取得

入力されたパラメータをそのまま渡したい場合

入力されたパラメータをそのまま別のプログラムのパラメーターとして渡したい場合、WScript.Arguments.Item(n) とかで取得した値をそのまま使うと、"(ダブルコーテーション)が取れたものを渡してしまうため、不都合が生じる。
そこで下記のようにして、値を全て " で囲んだ文字列を生成して渡す。

objArgs = WScript.Arguments
sArgs = ""

'名前なしパラメータの処理
For Each item In objArgs.Unnamed
    sArgs = sArgs & " " & """" & item & """"
Next

'名前つきパラメータの処理
For Each name In objArgs.Named
    sVal = objArgs.Named.Item(name)
    If sVal="" Then
        sArgs = sArgs & " /" & name
    Else
        sArgs = sArgs & " /" & name & ":" & """" & objArgs.Named.Item(name) & """"
    End If
Next

XML処理

XMLを生成してファイルに書き出す例

' 以下のXMLをファイル(test.xml)に書き出す
'
' <persons>
'     <person sex="male">
'         <name>山田太郎</name>
'         <address>東京都世田谷区</address>
'     </person>
' </persons>
 
'XML文書の生成
Set xmlDoc = WScript.CreateObject("MSXML2.DOMDocument")

'<persons>
Set rootElement = xmlDoc.createElement("persons")

'<person>
Set personElement = xmlDoc.createElement("person")
Set person_sexAttribute = xmlDoc.createAttribute("sex")
Set person_sexAttributeText = xmlDoc.createTextNode("male")
person_sexAttribute.appendChild(person_sexAttributeText)
personElement.setAttributeNode(person_sexAttribute)

'<person>/<name>
Set person_nameElement = xmlDoc.createElement("name")
Set person_nameElementText = xmlDoc.createTextNode("山田太郎")
person_nameElement.AppendChild(person_nameElementText)

'<person>/<address>
Set person_addressElement = xmlDoc.createElement("address")
Set person_addressElementText = xmlDoc.createTextNode("東京都世田谷区")
person_addressElement.AppendChild(person_addressElementText)

'XML文書の組み立て
xmlDoc.appendChild(rootElement)
rootElement.appendChild(personElement)
personElement.appendChild(person_nameElement)
personElement.appendChild(person_addressElement)

'XML文書の書き出し
xmlDoc.save("test.xml")

Tips


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-04-09 (日) 21:28:04 (2572d)