VBScript
はじめに VBScriptでファイルパスを扱うプログラムにおいて、ファイルパス中に半角スペースが含まれていると、パスの文字列が途中で切れてしまい、意図した動作をしてくれないことがあります。 ファイルパス中に半角スペースがある場合 ファイルパス中に半角…
はじめに 僕は、会社に入社してから4年くらいの間、Active Server Pages(最近では、レガシーASPやクラシックASPと呼ばれる)を使ったアプリケーションの開発をしてきました。 昨年、Active Server Pages(レガシーasp)開発で学んだこと(1) - 大人になったら…
はじめに フォルダやファイルを削除するプログラムをテストする際に、削除できないケース(異常系)のテストをします。これらのテストは、毎回アクセス権を変更したり、もとに戻したりするのが結構面倒だったりします。 簡単に異常系のテストをするには、アク…
はじめに VBScriptからODBCシステムデータソース経由でPostgreSQL8.4を操作してみました。前回までのエントリは、こちら。 初心者向けPostgreSQL8.4のpgAdmin3でデータベースを作成する ODBCシステムデータソースでPostgreSQL8.4に接続する(On Windows XP) P…
はじめに VBScriptで、PHPのhtmlspecialcharsメソッド(特殊文字を HTML エンティティに変換する)を実装してみました。 Function htmlspecialchars(Byref string, Byref quote_style) Dim tmp tmp = string tmp = Replace(tmp, "&", "&") tmp = Replace(t…
はじめに このエントリでは、VBScriptで一方向ハッシュ関数を使って、ハッシュ値を生成する方法について書いています。 結論 VBScriptにはSHA1やMD5といったアルゴリズムを用いてハッシュ値を生成する関数がありません。 このため、ハッシュ値の生成が必要な…
はじめに VBScriptには、JavaScriptでいうところのarray.sort()のような標準のソート(並び替え)関数がありません。このため、大抵はソート関数を自作することになるのですが、ADODB.Recordsetオブジェクトを使うと、簡単にソートが実現できます。 ADODB.Reco…
以前、Msxml2.DOMDocumentを使ってVBScriptでXMLファイルを読み込む - 大人になったら肺呼吸 というエントリを書きました。このとき、Msxml2.DOMDocumentのloadメソッドのエラー処理を以下のように書いていましたが、これではうまくエラー処理ができないこと…
はじめに VBScriptでXMLファイルを扱うには、Msxml2.DOMDocumentオブジェクトを使います。このMsxml2.DOMDocumentオブジェクト利用すると、XMLファイルのパース(解析)がとても楽にできるようです。 @IT:Windows TIPS -- Tips:WSHからXMLファイルの設定情…
VBScriptやJScriptで作成した共通機能を他の言語から利用するための仕組みとしてWindows Script Component(Windows スクリプト コンポーネント)というものがあります。 WindowsRスクリプト コンポーネントを使用すると、スクリプト内に、パワフルで再利用可…
はじめに ADODB.StreamオブジェクトのSaveToFileメソッドでUTF-8形式のファイルを作成した場合、ファイルの先頭にBOM(Byte Order Mark)が付加されてしまいます。 この記事では、BOMを付加せずに、UTF-8のファイルを作成する方法を紹介します。 2009.12.13追…
VBScriptには、JavaでいうところのPropertiesクラスように、プロパティファイルを扱うオブジェクトやメソッドがありません。このため、キーとや値を定義したプロパティファイルを扱いたい場合は、自作する必要があります。以下のページを参考に、VBScriptでJ…
VBScriptでファイルを読み書きする場合、ADODB.StreamオブジェクトとFileSystemObjectオブジェクトが利用できます。これらのオブジェクトの使い方に関しては、インターネットで調べるとたくさんの情報を見つけることができます。しかしながら、両者の性能差…
Windows Script Component(以下、WSC)のレジストリ登録時に「適切な名前を指定してください。」というエラーが出る場合というのは、結論から言いますと、XMLの文法に正しく従っていない可能性があります。色々パターンはあると思いますが、自分が陥ったパタ…
はじめに Web系雑記: サロゲートペアをJavaScriptで検出する方法にインスパイアされて、サロゲートペアの文字を検出するVBScriptを作成してみました。 サロゲートペアとは サロゲートペアとは、通称4バイト文字と呼ばれる特殊な文字を表現する方法のことです…
はじめに VBScriptでファイルを扱う場合、通常はFileSystemObjectを利用します。しかしながら、FileSystemObjectはShift_JISあるいはUTF-16形式で保存されたファイルしか扱えません。このため、VBScriptでUTF-8のファイルを扱うにはADODB.Streamオブジェクト…
はじめに VBScript(.vbs)をUTF-8で保存して実行すると、コンパイルエラーとなり、実行させることができません。 たとえば、以下のような、メッセージを出力するだけのvbsスクリプトを作ります。 hoge.vbs Main() Sub Main() MsgBox "ほげ" End Subこのファ…
パラメタで指定されたディレクトリ配下にあるファイルの最終更新日時、ファイルファイルサイズ、ファイル名、ファイルバージョンをリスト表示し、結果ログに出力するVBScriptを作ってみました。コマンドプロンプトで dir /s って実行したのとほとんど同じで…
はじめに このエントリでは、VBScriptで複数行を一度にコメントアウト(実行しないように)する方法を紹介します。 VBScriptは複数行を一度にコメントアウトできない VBScriptでは、複数行を一度にコメントアウトすることができません。要するにJavaやCでい…
VBScriptでは、関数内でエラーをRaiseするとFunction(関数)の戻り値が返ってきません。以下のコードで実験してみます。 Hoge関数では、戻り値をセットした後に、意図的にエラーを呼び出し元へRaiseしています。 On Error Resume Next ' 関数Hogeの呼び出し d…
クラシックASPで、データベースを操作する際にはADODB.Recordsetを使うことができる。このADODB.Recordsetオブジェクトには、オープンしたレコードセットをクローズするためのcloseメソッドがあるが、このcloseを呼び出す場合にケースによって、エラーするこ…
はじめに レガシーASP(クラシックASP)で、SQLを発行してデータベースからデータを取得する際に、結果として取得したレコードの件数を取得したい場合があります。このエントリでは、ADODB.RecordsetのRecordCountで正しいレコード数を取得する方法を紹介しま…
VBScriptの配列は貧弱で、要素の追加や並び替え(ソート)、重複の排除など、配列操作のための関数がそろっていない。特に厄介だと思うのは、簡単に要素の追加ができないというところ。JavaScriptでいうarray.push()みたいなことが標準ではできないから、あ…
レガシーASP(Active Server Pages)では、独自クラスを作ることができます。以下に、VBScriptでのクラスの使い方をまとめてみました。 クラスの定義 たとえば、nameプロパティと対応するゲッタ・セッタを持つ、Hogeという名前のクラスを作る場合は、以下の…
僕が会社に入って3年が経過しました。そのうち2年くらいは同じプロジェクトに携わっていて、レガシーASP(クラシックASP)でのWEBアプリケーションの開発をしています。 この2年で僕がレガシーASPでの開発で学んだことや大事だと思うことをまとめてみました…
以前、業務中の定型的な作業を自動化しようと思い、VBScriptを使ってちょっとしたスクリプトを書いたことがあった。作成した.vbsファイルをWindows Server 2008上で実行してみると、WScript.Echoの出力しようとした文字列が、コンソールではなく、メッセージ…
はじめに VBScriptでファイルにBOM(Byte Order Mark)が付加されているかどうかは、ファイルを1バイトずつ読み込んでいき、BOM特有のバイト列が存在するかを調べることで、判定することができます。 本エントリでは、ファイルにBOMがついているかをVBScript…
VBScriptでローカルファイルの読み書きを行う場合、以下の2つのオブジェクトを利用することができます。 FileSystemObject(ファイルシステムオブジェクト) ADODB.Streamオブジェクト 両者の違いは、簡単にいうと扱える文字コードが違います。FileSystemObje…