• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBscriptでディレクトリ一覧ファイルを抽出したい。)

VBscriptでディレクトリ一覧ファイルを抽出する方法について

BLUEPIXYの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

#1の補足を読んで、簡単なサンプルを作ってみました 細部は実際のディレクトリの状況とか 日付の比較で <= (指定日を含む)なのか < (含まない)なのかとか調整して下さい。 ---------------------------------------------------------------- '扱うフォルダの構成 'C:\temp\aaa\デイリー\12345\2006年03月 のディレクトリ Set fso = CreateObject("Scripting.FileSystemObject") today = Date '今日の日付 firstDay = DateSerial(Year(today),Month(today),1) '今月の1日 Set DirTxtFile = fso.OpenTextFile("ディレクトリ一覧.txt") Do Until DirTxtFile.AtEndOfStream aLine = DirTxtFile.ReadLine '一行読み出し field=split(aLine, "\",-1,1) '"\" で区切られた文字列の分解 If field(3) = "デイリー" Then 'デイリーの時 baseDate = DateAdd("m",-2,firstDay) '2ヶ月前の1日 ElseIf field(3) ="マンスリー" Then baseDate = DateAdd("yyyy",-2,firstDay) '2年前の1日 End If 'left(field(5),8) で日付部分を取りだし日付にして基準日より小さいか調べる If DateValue(left(field(5),8)) < baseDate Then WScript.Echo aLine ' 該当する行の書き出し End If Loop DirTxtFile.Close ---------------------------------------------------------------- 実行方法: cscript //nologo select.vbs > output.txt

taffy001
質問者

補足

BLUEPIXYさん。 こんにちは。 お忙しいところご回答有難うございます。 以下のように実行してみましたが、 エラーとなってしまいました。 <実行ロジック> ------------------------------------------------- '扱うフォルダの構成 'C:\temp\aaa\デイリー\12345\2006年03月 のディレクトリ Option Explicit Dim aLine Dim baseDate Dim DirTxtFile Dim field Dim firstDay Dim fso Dim strPath Dim today strPath = "D:\bat\dirlist.txt" ' ディレクトリ一覧ファイル today = Date '今日の日付 firstDay = DateSerial(Year(today),Month(today),1) '今月の1日 Set fso = CreateObject("Scripting.FileSystemObject") Set DirTxtFile = fso.OpenTextFile(strPath) Do Until DirTxtFile.AtEndOfStream aLine = DirTxtFile.ReadLine '一行読み出し field = split(aLine, "\",-1,1) '"\" で区切られた文字列の分解 If field(3) = "デイリー" Then 'デイリーの時 baseDate = DateAdd("m",-2,firstDay) '2ヶ月前の1日 ElseIf field(3) ="マンスリー" Then baseDate = DateAdd("yyyy",-2,firstDay) '2年前の1日 End If 'left(field(5),8) で日付部分を取りだし日付にして基準日より小さいか調べる If DateValue(left(field(5),8)) < baseDate Then WScript.Echo aLine ' 該当する行の書き出し End If Loop DirTxtFile.Close ---------------------------------------------- <エラー内容> D:\>cscript //nologo test1.vbs > output.txt D:\060713_001_DiskLaundry.vbs(23, 1) Microsoft VBScript 実行時エラー: インデックスが有効範囲にありま せん。: '[number: 3]' 23行目(If field(3) = "デイリー" Then 'デイリーの時)が間違っているようですが。。 わからなく困っています。 ご指導願えませんでしょうか。 宜しくお願いいたします。

関連するQ&A

  • バッチファイルで一つのファイルをdirで比較し分岐

    バッチファイルでフォルダにある全てのファイルに対し ファイルごとにdir /T:Cとdir /T:Wで比較し 同じならば削除 異なれば何もしない 処理をしたく質問させて頂きました 次のような結果の場合日時が同じなのでファイルを削除する C:\>dir D:\AAA\001.jpg /T:C ドライブ D のボリューム ラベルは microSD です ボリューム シリアル番号は E484-83B8 です D:\AAA のディレクトリ 2012/11/28 12:59 1,284 001.jpg 1 個のファイル 1,284 バイト 0 個のディレクトリ 24,690,798,592 バイトの空き領域 C:\>dir D:\AAA\001.jpg /T:W ドライブ D のボリューム ラベルは microSD です ボリューム シリアル番号は E484-83B8 です D:\AAA のディレクトリ 2012/11/28 12:59 1,284 001.jpg 1 個のファイル 1,284 バイト 0 個のディレクトリ 24,690,798,592 バイトの空き領域 日時が異なるので何もしない C:\>dir D:\AAA\002.jpg /T:C ドライブ D のボリューム ラベルは microSD です ボリューム シリアル番号は E484-83B8 です D:\AAA のディレクトリ 2012/11/07 03:12 1,443,326 002.jpg 1 個のファイル 1,443,326 バイト 0 個のディレクトリ 24,690,798,592 バイトの空き領域 C:\>dir D:\AAA\002.jpg /T:W ドライブ D のボリューム ラベルは microSD です ボリューム シリアル番号は E484-83B8 です D:\AAA のディレクトリ 2012/11/04 17:53 1,443,326 002.jpg 1 個のファイル 1,443,326 バイト 0 個のディレクトリ 24,690,798,592 バイトの空き領域 またもっと簡単にdir D:\AAA /T:Cとdir D:\AAA /T:Wの結果で 分岐処理は可能でしょうか よろしくお願いします

  • Excel VBA サブディレクトリの取得について

    Excel VBA についての質問です。 私は、VBAの初心者です。 フォルダ選択ダイアログを開き、あるフォルダを選択させます。 選択したフォルダ配下のファイルとサブフォルダにあるファイル一覧とそのファイルのパス取得したいです。 【例】D:\TEMP\AAA フォルダを選択 D:\TEMP\AAA  D:\TEMP\AAA\BBB\CCC.txt D:\TEMP\AAA\BBB\DDD\EEE.txt D:\TEMP\AAA\BBB\DDD\FFF.txt GGG.txt が存在する。 まず、フォルダAAAまで選択されたら、 以下の結果がエクセルに出力したいです。 BBB         CCC.txt BBB\DDD        EEE.txt BBB\DDD        FFF.txt               GGG.txt うまく伝えないかもしれないですが、ご教授お願いいたします。

  • 親ディレクトリの更新日付を更新せずにファイルを削除するには

    親ディレクトリの更新日付を更新せずにファイルを削除するには 例えば、以下のディレクトリ構成で「aaa.txt」を削除しても親ディレクトリである「AAA」の更新日付が変更されない方法はありますでしょうか? なお、実装はRHEL5上でのBashスクリプトになります。 /home/hoge/AAA/ => 2010/10/01 06:30:00 /home/hoge/AAA/aaa.txt => 2010/10/01 06:30:00 2010/10/03 12:30:00に以下のコマンドを発行 rm /home/hoge/AAA/aaa.txt /home/hoge/AAA/ => 2010/10/03 12:30:00 に更新されてしまいます。 => 2010/10/01 06:30:00 を保持していたいのです。 できればコマンドのみで解決したいと思っています。 コマンド単体で無理なら、rmで削除する前にディレクトリ情報を一時ファイルへ書き出すしかないと思っています。 以上、よろしくお願いします。

  • ファイル一覧が見たい。

    UNIX系、Solaris、Linuxどちらの場合もあるのですが、 Apacheの公開ディレクトリのファイル一覧を見たいのです。 lsで見るのも、いちいち手間がかかるので、 Windowsのエクスプローラーの様な形式で見られるソフトで、尚且つファイルのパーミッションも全て見えるというのが理想ですが、 理想まで行かなくても、 ファイルの一覧をパッと、ツリー形式で見れるソフトは無いですか? windowsから、ログインして、一覧を抜き出すとか。 linux内で、textに書き出すとか。 どなたか教えて下さい。

  • ディレクトリ一覧作成の高速化

    UNIXで / 配下のディレクトリ一覧をファイル出力することになりました。 今は # find / -type d > /tmp/hoge.txt としてますが、/ 配下のファイル数(ディレクトリも含む)が30万以上もあるため、 一覧を出力するだけで非常に時間がかかります。 ディスクは1マシン辺り30本程ついています。 (この規模のマシンが50台くらい) 後の方法は、ls でドバーっと出力して後からディレクトリだけを抽出する、という 感じくらいかなと思うのですが、もっと早く出力する方法があれば教えてください。 よろしくお願いします。

  • WSHファイルからFTPを利用してダウンロードする

    batファイル,もしくはWSHファイルを使用してのFTPサーバからのファイルダウンロードを行う際の記述方法について質問致します。 行いたいことはFTPサーバ側に日毎のディレクトリが作成され その中に格納されるテキストファイルを自動でローカルの指定ディレクトリに上書きする手順になります。 WSHに関しては全くの素人なので非常に苦戦しております… FTPサーバ側 /@day/*.txt @dayには本日の日付が2桁で入ります。 1月1日なら01、2月23日なら23 Local保存側 D:\temp お手すきの時にでもご教授頂ければ幸いです。

  • コマンドプロンプトでディレクトリ内のファイル一覧をテキストファイルに書き出す

    コマンドプロンプトでディレクトリ内のファイル一覧をテキストファイルに書き出す事が出来たはずなのですが、方法を忘れてしまいました。 例えば dir Aフォルダ 内に 1.gif 2.jpeg 3.eps が入っている場合にコマンドプロンプトにて -------- 1.gif 2.jpeg 3.eps -------- という内要のテキストファイルを作成したいのです。 上記のように3点しかないものなら自力で作成するのですが 5000点ほどある為手作業ではしんどいです。 できれば純粋なファイル名(拡張子なし)で実現できればいいのですが、それが無理なら後はテキスト処理で対応しようと考えています。 識者の方よろしくお願いします。

  • ディレクトリー内のファイル名へのアクセス

    Windows10を使っています。 ファイルエクスプローラーを使ってあるディレクトリーをオープンした時に表示されるファイル名一覧を、テキストとして任意の場所にセーブする方法はありませんか? ご存知の方がいらっしゃいましたら、どうか教えてください。お願いします。

  • VBScriptで削除処理

    初めまして。 VBScriptを今回初めて使用しながらスクリプトを作成しようとしています。 〔質問〕 以下のような削除処理をVBScriptにて実施したいのですが、どのような構文を書けばいいのでしょうか? ご教授お願いします。 以下、例を挙げ記述致します。 (例)処理日が2008/3/22の場合。 「AAAA」ディレクトリ配下の以下のログファイルを二日前までの日付になっているログファイルのみ残し、あとは全て削除するという処理をしたい。 AAAAディレクトリの配下 ・aa080319.log→削除 ・aa080320.log→削除 ・aa080321.log→残す ・aa080322.log→残す 上記例を用いますが、自分で考えた処理フローとしまして、 (1)「AAAA」ディレクトリ配下のファイル一覧をテキストファイルに書き込む。 (2)「(1)」で作成したテキストファイルを読み込み、「2008322」と「2008321」に一致しないログファイルを削除。 以上、宜しくお願いします。

  • バッチファイルでのファイル一覧取得

    初心者です。初めてバッチファイルを作成しようと考えていますが、作成方法がわかりません。 環境はWindwsです。 C:\BディレクトリにAというフォルダがありその中に複数のテキストファイルが保存されています。 そのファイルの一覧をBディレクトリ直下のfile_name.txtへ書き込みたいのですが、dirコマンドでファイルの一覧が取得できるのはわかったのですが、ディレクトリ移動してファイルを書き込む方法がわからず困っています。 更にAフォルダには毎日違うテキストファイルが保存されるため、次回バッチを起動した際にはfile_name.txtの中身をクリアして新規に書き込みをしたいと考えています。 初心者で質問内容に不備があるかもしれませんが、ご教授お願いします。