小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


VBScript

VBScriptでファイルパス中の半角スペースでパスが切れてしまう場合の対処方法

はじめに VBScriptでファイルパスを扱うプログラムにおいて、ファイルパス中に半角スペースが含まれていると、パスの文字列が途中で切れてしまい、意図した動作をしてくれないことがあります。 ファイルパス中に半角スペースがある場合 ファイルパス中に半角…

Active Server Pages(レガシーasp)開発で学んだこと(2)

はじめに 僕は、会社に入社してから4年くらいの間、Active Server Pages(最近では、レガシーASPやクラシックASPと呼ばれる)を使ったアプリケーションの開発をしてきました。 昨年、Active Server Pages(レガシーasp)開発で学んだこと(1) - 大人になったら…

フォルダやファイルを削除する際の異常系のテストを簡単に行う方法

はじめに フォルダやファイルを削除するプログラムをテストする際に、削除できないケース(異常系)のテストをします。これらのテストは、毎回アクセス権を変更したり、もとに戻したりするのが結構面倒だったりします。 簡単に異常系のテストをするには、アク…

VBScriptからODBC経由でPostgreSQL8.4を操作する

はじめに VBScriptからODBCシステムデータソース経由でPostgreSQL8.4を操作してみました。前回までのエントリは、こちら。 初心者向けPostgreSQL8.4のpgAdmin3でデータベースを作成する ODBCシステムデータソースでPostgreSQL8.4に接続する(On Windows XP) P…

VBScriptで簡易的なhtmlspecialchars関数を実装する

はじめに VBScriptで、PHPのhtmlspecialcharsメソッド(特殊文字を HTML エンティティに変換する)を実装してみました。 Function htmlspecialchars(Byref string, Byref quote_style) Dim tmp tmp = string tmp = Replace(tmp, "&", "&") tmp = Replace(t…

VBScriptで一方向ハッシュ関数を利用する方法

はじめに このエントリでは、VBScriptで一方向ハッシュ関数を使って、ハッシュ値を生成する方法について書いています。 結論 VBScriptにはSHA1やMD5といったアルゴリズムを用いてハッシュ値を生成する関数がありません。 このため、ハッシュ値の生成が必要な…

VBScriptのADODB.Recordsetを使ってソート(sort)する

はじめに VBScriptには、JavaScriptでいうところのarray.sort()のような標準のソート(並び替え)関数がありません。このため、大抵はソート関数を自作することになるのですが、ADODB.Recordsetオブジェクトを使うと、簡単にソートが実現できます。 ADODB.Reco…

Msxml2.DOMDocumentのloadメソッドを利用する際のエラー処理

以前、Msxml2.DOMDocumentを使ってVBScriptでXMLファイルを読み込む - 大人になったら肺呼吸 というエントリを書きました。このとき、Msxml2.DOMDocumentのloadメソッドのエラー処理を以下のように書いていましたが、これではうまくエラー処理ができないこと…

Msxml2.DOMDocumentを使ってVBScriptでXMLファイルを読み込む

はじめに VBScriptでXMLファイルを扱うには、Msxml2.DOMDocumentオブジェクトを使います。このMsxml2.DOMDocumentオブジェクト利用すると、XMLファイルのパース(解析)がとても楽にできるようです。 @IT:Windows TIPS -- Tips:WSHからXMLファイルの設定情…

WSCファイルのひな型を自動生成してくれるWindows Script Component Wizard

VBScriptやJScriptで作成した共通機能を他の言語から利用するための仕組みとしてWindows Script Component(Windows スクリプト コンポーネント)というものがあります。 WindowsRスクリプト コンポーネントを使用すると、スクリプト内に、パワフルで再利用可…

ADODB.Streamオブジェクトを使ってBOMなしUTF-8のファイルを作成する方法

はじめに ADODB.StreamオブジェクトのSaveToFileメソッドでUTF-8形式のファイルを作成した場合、ファイルの先頭にBOM(Byte Order Mark)が付加されてしまいます。 この記事では、BOMを付加せずに、UTF-8のファイルを作成する方法を紹介します。 2009.12.13追…

VBScriptでJavaのPropertiesクラスっぽいクラスを作って、プロパティファイルを扱ってみる

VBScriptには、JavaでいうところのPropertiesクラスように、プロパティファイルを扱うオブジェクトやメソッドがありません。このため、キーとや値を定義したプロパティファイルを扱いたい場合は、自作する必要があります。以下のページを参考に、VBScriptでJ…

ADODB.StreamオブジェクトとFileSystemObjectのファイル読み書きの性能差

VBScriptでファイルを読み書きする場合、ADODB.StreamオブジェクトとFileSystemObjectオブジェクトが利用できます。これらのオブジェクトの使い方に関しては、インターネットで調べるとたくさんの情報を見つけることができます。しかしながら、両者の性能差…

Windows Script Componentのレジストリ登録時に「適切な名前を指定してください。」というエラーが出る件とその対処法

Windows Script Component(以下、WSC)のレジストリ登録時に「適切な名前を指定してください。」というエラーが出る場合というのは、結論から言いますと、XMLの文法に正しく従っていない可能性があります。色々パターンはあると思いますが、自分が陥ったパタ…

VBScriptでサロゲートペアの文字を検出する方法

はじめに Web系雑記: サロゲートペアをJavaScriptで検出する方法にインスパイアされて、サロゲートペアの文字を検出するVBScriptを作成してみました。 サロゲートペアとは サロゲートペアとは、通称4バイト文字と呼ばれる特殊な文字を表現する方法のことです…

ADODB.Streamオブジェクトを利用したUTF-8ファイルの読み書き

はじめに VBScriptでファイルを扱う場合、通常はFileSystemObjectを利用します。しかしながら、FileSystemObjectはShift_JISあるいはUTF-16形式で保存されたファイルしか扱えません。このため、VBScriptでUTF-8のファイルを扱うにはADODB.Streamオブジェクト…

VBScriptをUTF-8で保存し、実行するとエラーがでる件とそれに対する対処方法

はじめに VBScript(.vbs)をUTF-8で保存して実行すると、コンパイルエラーとなり、実行させることができません。 たとえば、以下のような、メッセージを出力するだけのvbsスクリプトを作ります。 hoge.vbs Main() Sub Main() MsgBox "ほげ" End Subこのファ…

指定されたディレクトリ配下のファイルの情報を一覧で出力するスクリプト

パラメタで指定されたディレクトリ配下にあるファイルの最終更新日時、ファイルファイルサイズ、ファイル名、ファイルバージョンをリスト表示し、結果ログに出力するVBScriptを作ってみました。コマンドプロンプトで dir /s って実行したのとほとんど同じで…

VBScriptで複数行を一度にコメントアウト(実行しないように)する方法

はじめに このエントリでは、VBScriptで複数行を一度にコメントアウト(実行しないように)する方法を紹介します。 VBScriptは複数行を一度にコメントアウトできない VBScriptでは、複数行を一度にコメントアウトすることができません。要するにJavaやCでい…

VBScriptではエラーをRaiseすると関数の戻り値が返らない

VBScriptでは、関数内でエラーをRaiseするとFunction(関数)の戻り値が返ってきません。以下のコードで実験してみます。 Hoge関数では、戻り値をセットした後に、意図的にエラーを呼び出し元へRaiseしています。 On Error Resume Next ' 関数Hogeの呼び出し d…

ADODB.Recordsetのcloseメソッドでエラーが発生する場合の対処法

クラシックASPで、データベースを操作する際にはADODB.Recordsetを使うことができる。このADODB.Recordsetオブジェクトには、オープンしたレコードセットをクローズするためのcloseメソッドがあるが、このcloseを呼び出す場合にケースによって、エラーするこ…

ADODB.RecordsetでRecordCountを取得する

はじめに レガシーASP(クラシックASP)で、SQLを発行してデータベースからデータを取得する際に、結果として取得したレコードの件数を取得したい場合があります。このエントリでは、ADODB.RecordsetのRecordCountで正しいレコード数を取得する方法を紹介しま…

レガシーASPで使える拡張配列クラスを作ってみた。

VBScriptの配列は貧弱で、要素の追加や並び替え(ソート)、重複の排除など、配列操作のための関数がそろっていない。特に厄介だと思うのは、簡単に要素の追加ができないというところ。JavaScriptでいうarray.push()みたいなことが標準ではできないから、あ…

レガシーASPでクラスを使う

レガシーASP(Active Server Pages)では、独自クラスを作ることができます。以下に、VBScriptでのクラスの使い方をまとめてみました。 クラスの定義 たとえば、nameプロパティと対応するゲッタ・セッタを持つ、Hogeという名前のクラスを作る場合は、以下の…

Active Server Pages(レガシーasp)開発で学んだこと(1)

僕が会社に入って3年が経過しました。そのうち2年くらいは同じプロジェクトに携わっていて、レガシーASP(クラシックASP)でのWEBアプリケーションの開発をしています。 この2年で僕がレガシーASPでの開発で学んだことや大事だと思うことをまとめてみました…

CScriptとWScript

以前、業務中の定型的な作業を自動化しようと思い、VBScriptを使ってちょっとしたスクリプトを書いたことがあった。作成した.vbsファイルをWindows Server 2008上で実行してみると、WScript.Echoの出力しようとした文字列が、コンソールではなく、メッセージ…

VBScriptでファイルにBOM(Byte Order Mark)がついているかどうかを判定する方法

はじめに VBScriptでファイルにBOM(Byte Order Mark)が付加されているかどうかは、ファイルを1バイトずつ読み込んでいき、BOM特有のバイト列が存在するかを調べることで、判定することができます。 本エントリでは、ファイルにBOMがついているかをVBScript…

VBScrptでファイルの文字コードを自動的に判定して読み込む方法

VBScriptでローカルファイルの読み書きを行う場合、以下の2つのオブジェクトを利用することができます。 FileSystemObject(ファイルシステムオブジェクト) ADODB.Streamオブジェクト 両者の違いは、簡単にいうと扱える文字コードが違います。FileSystemObje…