Tech-Ezo (Hokkaido PC and Network Users Group)
 Top Page  |  What's Tech-Ezo  |  Next Seminar  |  Seminar Log  |  Seminar Plan  |  Tips  |  life  |  Link  |
Scr.003 ステップアップ WSH - 使えそうなスクリプトを作って見よう
前ページへ   [ステップアップ WSHへ戻る]   次ページへ


■  Level.3  テキストファイル(.txt)だけを処理対象にする
■ ■

 Level2ではc:\script\tips内にある「ファイル一覧」「フォルダ一覧」をメッセージ出力しました。ところが良く見ると、"xxx.doc"や"xxx.xls"も表示されていて、このままではテキストファイル検索に問題がありそうです。

 そこで、Level3ではテキストファイル(xxx.txt)のみを処理対象とするように、Level2を修正して見ましょう。

拡張子が"txt"のファイルのみを処理対象とする

 ファイルのループ時に取得したファイル名の拡張子を判断し、"txt"のときだけ処理対象とするようにしました。

level03.vbs
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
Set fso = CreateObject("Scripting.FileSystemObject")
Set src = fso.GetFolder("C:\script\tips")    ' 対象フォルダの指定

' 指定のフォルダに格納された各ファイルを処理する
tmpMessage = "ファイル一覧:" & vbNewLine
For Each FileName In src.Files
    FileEx = fso.GetExtensionName(FileName)  ' ファイル名から拡張子を抜き出す
    If LCase(FileEx) = "txt" Then            ' 拡張子を小文字化してから比較
        tmpMessage = tmpMessage & FileName & vbNewLine
    End If
Next
WScript.Echo tmpMessage

' 指定のフォルダに格納された各サブフォルダを処理する
tmpMessage = "フォルダ一覧:" & vbNewLine
For Each FolderName In src.Subfolders
    tmpMessage = tmpMessage & FolderName & vbNewLine
Next
WScript.Echo tmpMessage
※ level2.vbsからの変更箇所(行追加や修正したところ)は行番号をオレンジにしました。

 それでは変更ポイントを見てみましょう。

7行目

007
    FileEx = fso.GetExtensionName(FileName)  ' ファイル名から拡張子を抜き出す

 6行目〜11行目がLevel2と同様ファイルのループとなり、その中に若干の修正を加えて見ました。まず、7行目ですがファイル名が格納された変数(FileName)から拡張子(".txt",".doc",".xls" ...等)を、GetExtensionNameメソッドを使って抜き出しています。例えば、"C:\script\tips\R23_001.txt"というファイル名から".txt"の部分のみを抜き出す機能となっています。

 FileSystemObjectのメソッドには他にも似たような機能がありますので、表に纏めてみます。

FileSystemObjectのパス名(ファイル名)変換メソッド
FileName 例) C:\script\tips\R23_001.txt
fso.GetDriveName(FileName) ドライブ名
例) C:
fso.GetFileName(FileName) ファイル名(もしくはパスの最後のフォルダ名)
例) R23_001.txt
fso.GetBaseName(FileName) ファイルのベース名(拡張子を除いたもの)
例) R23_001
fso.GetExtensionName(FileName) 拡張子
例) txt
fso.GetParentFolderName(FileName) ファイルが格納されているフォルダ名(パス)
例) C:\script\tips

8行目〜10行目

008
009
010
    If LCase(FileEx) = "txt" Then            ' 拡張子を小文字化してから比較
        tmpMessage = tmpMessage & FileName & vbNewLine
    End If

 8行目では、取得したファイルの拡張子(FileEx)が".txt"の場合だけtmpMessageへの連結処理を行うようにIf文を追加しました。また、LCase(Lower Case)文によって全てFileExを小文字化することで、「xxx.TXT」や「xxx.TxT」等と大文字・小文字が混在した状態でも、全て小文字化され".txt"として比較することが可能となっています。

 変更点はこれだけです。これで、"xxx.doc"や"xxx.xls"といったファイルが除外されるようになりました。

実行してみましょう

 Level2と同様にlevel3.vbsをダブルクリックかwscriptで実行して見ましょう。1つ目のメッセージの内容から、".doc"と".xls"のファイルが除外されていることを確認して下さい。

level3.vbsファイルをダブルクリックして実行



前ページへ   [ステップアップ WSHへ戻る]   次ページへ
-
※全ては自己責任でお願いします。
※当サイトに関するご連絡は tomomo_c@hotmail.com までお願いします。
最終更新日 2004.3.24