VBSでのファイル入出力

VB6,VBA,VBS,EXCEL,DOS,BAT,WSH,WORDの小技メモ

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ 燈明日記/ Perlノート/ 漢字起源/ yahoo

はじめに

本ページは、ウインドウズ系全般のティプスメモです。

そう、はじめはVB系のティプスメモだったのですが…いつの間にか、ウインドウズ系全般のティプスメモになってしまいました。

ちなみに、ティプス(Tips)とは、マニュアルに書かれていない技法や裏わざのことですが、本ページでは、私が経験してこれはと思ったノウハウのメモになっています。

尚、以下は本サイトの最新情報(ブログ)です。

それでは、本ページが何かのお役に立てれば幸いです。ごゆっくりご覧ください。

◆ VBSでのファイル入出力

VBS(VBスクリプト)が他のVB系との一番の違いは、変数の型がvariantしかなく、ファイル入出力がストリームしかないことだと思います。

つまり、従来のファイルに対してのオープンクローズでなく、ストリームオブジェクトに対してのオープンクローズ操作になるのです。

また、変数はvariantしかないので、型を宣言する必要がなく、関数のリターン値の型も宣言する必要がなのです。

ストリームオブジェクトを使ったファイルコピーのサンプル

WScript.Echo "TEST開始"
If TestFileCopy = 0 then
    WScript.Echo "コピー正常"
Else
    WScript.Echo "コピー異常"
End if
WScript.Echo "TEST終了"
WScript.Quit(0)

Function TestFileCopy()
'----------------------------------------------------
'TEST testIn.csv copy to testOut.csv
'----------------------------------------------------
const ForReading = 1, ForWriting = 2, ForAppending = 3
Dim strPathIn
Dim strPathOut
Dim fs, fr, fw
Dim intSts

    strPathIn = "testIn.csv"
    strPathOut = "testOut.csv"
    Set fs = CreateObject("Scripting.FileSystemObject")

    If fs.fileexists(strPathIn) then
        Set fr = fs.OpenTextFile(strPathIn, ForReading)
        Set fw = fs.OpenTextFile(strPathOut, ForWriting,True)

        Do While Not fr.AtEndOfStream
            fw.WriteLine fr.ReadLine
        Loop

        fw.Close
        fr.Close
        Set fw = Nothing
        Set fr = Nothing
        intSts = 0
    Else
        Call MsgBox("ファイル見つからない!",48,"エラー")
        intSts = 1
    End if
    Set fs = Nothing
    TestFileCopy = intSts
End Function

尚、OpenTextFileの第3引数は、省略可能で、Trueを指定した場合は、ファイルがなければ新規に作成するという指定になります。

おわりに

以下のページには、すべてのTIPSがあります。もしよろしければ、どうぞ!

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくVB-TIPS掲示板へご指摘ください。

人のよいところをどんどん見つけよう