リファレンス †各処理 †文字列処理 †パスからファイルの拡張子を除いた文字列を返す関数 †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 † |