• 締切済み

【VBS】 フォルダ直下のファイル名を配列に取り込む方法

いつもお世話になっております。 WindowsXP環境のある【D:\test】フォルダにいくつかのテキストファイルやエクセルファイル等があります。 これらのファイル名及び更新日時をVBSの配列( File()とTime()の2つの配列 )に取り込む事は可能でしょうか? 1つの配列にファイル名及び更新日時の情報を配列に入れるのは難しそうなので2つ分けて取りこみたいのです。 ご存知の方がいれば、ご教授願いませんでしょうか? 何卒、宜しくお願い致します。

みんなの回答

回答No.3

FileSystemObjectを使えば似たようなことができます。 Dim objFSO Dim objFile Dim strText Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") For Each objFile In objFSO.GetFolder("D:\test").Files ' ファイル名 If strText <> "" Then strText = strText & vbCrLf & objFile.Name Else strText = objFile.Name End If ' 更新日時 strText = strText & ":" & objFile.DateLastModified Next WScript.Echo strText Set objFSO = Nothing [MSDN]FileSystemObject のプログラミング http://msdn.microsoft.com/ja-jp/library/cc392177.aspx

  • j-kachimi
  • ベストアンサー率35% (48/136)
回答No.2

先ほどの訂正 dblRET = Shell("c:\dtof.bat", vbNormalFocus)

  • j-kachimi
  • ベストアンサー率35% (48/136)
回答No.1

APIを使えば可能ですが今回は別な方法をご紹介します。 1.バッチファイルを作る。 仮にファイル名をc:\dtof.batとし、メモ帳などで中身は dir c:\*.* >c:\ddd.tmp とする。 これはc:\のディレクトリー情報をc:¥ddd.tmpに落とすバッチです。 2.このバッチファイルをVBで実行する Dim dblRET dblRET = Shell("c:\ddd.bat", vbNormalFocus) 3.c:¥ddd.tmpを読み込んで必要なデータを切り出す。 以上 APIの方はVB花ちゃんやVB中学校等で探せば見つかると思いますよ。

関連するQ&A

  • ファイル名のリストが作りたい-どうしたらいいの?

    任意のフォルダーのファイル名のリストをテキストデータとしてほしいのですが、どうしたらいいでしょうか? WordやExcel、一太郎などで利用できるテキストとしてほしいです。 ファイル名だけでも、更新日時、種類、サイズ等が入っても良いです よろしくお願いいたします。

  • バッチファイル フォルダサイズの取得方法

    お世話になっております。 WindowsXP環境にて下記のバッチファイルにて【D:\test】直下の【sample】フォルダの サイズを調べるバッチを作成予定です。 DIRコマンドで何かしらのオプションでどこかのテキストにサイズを出力し、 それを変数に読み込む・・・も考えましたが、二度手間に思えます。 どうにかわざわざテキストファイルに出力せずに直接変数にフォルダサイズを格納する バッチファイルは可能でしょうか? VBSではなく、バッチファイルで実現したいのです。 ご存知の方がいましたら、ご教授願いますでしょうか? 何卒宜しくお願い致します。

  • あるフォルダのファイル名を取得したい(vbs)

    VBスクリプトを使って、TESTフォルダにあるJPGファイル中で、一番新しいファイルのファイル名を取得したいと思っています。 JPGは、ファイル名が日付.jpgになっています。例)061123.jpg vbsは苦手で途中挫折してしましました。。ぜひ教えて頂けないでしょうか。 --------------- Dim Fs,strPath,Fl Set Fs = CreateObject("Scripting.FileSystemObject") strPath = "C:\Test\" Set Fl = Fs.GetFile(strPath) MsgBox Fl Set Fs = Nothing Set Fl = Nothing

  • VBSを利用して、ファイル名を取得

    VBSを利用して、ファイル名を取得 はじめまして VBSを利用して、ファイルのフルパスを取得したいと思っております。 具体的には、フォルダ内のファイルを1ファイルずつ取得するようなプログラムを 作成したいと思っております。 C:\TEST \2010 \aaa.csv C:\TEST \2010 \bbb.csv C:\TEST \2009 \ccc.csv C:\TEST \2008 \ddd.csv C:\TEST \2008 \eee.csv フルパスを取得したいのですが、どのようにしたら良いでしょうか。 最終的には、上記の読み込んだファイルごとにファイルの中身を1行ずつ確認して、 特定の文字が含まれているか確認をするようなスクリプトにしようと思っております。 そのため、objFS.OpenTextFile("取得フルパス",ForReading)のようにして 取得したフルパスごとに読み込みをしようと思っております。 どなたか、お手数ではございますが、ご教授願います。

  • ファイル名・フォルダ名が表示されない

    windows vistaです。 何をしたかわからないのですが、ファイル名やフォルダ名が表示されなくなってしまいました。 しかし『ファイル名を非表示』にチェックが入っているわけでもなく、ファイル名の代わりに『更新日時』が表示されていたりする状態です。 『詳細表示の設定』で、『更新日時』のチェックを外そうとしたのですが、エラー音が出て外せません。固定されているようです。 似たような症状を検索して解決法を試してみたのですが(ファイル名非表示のチェックを外す、シフトを押しながらフォルダを開く、セーフティーモードで起動する)、どれも元に戻りません。 なんとか直したいのですが、解決法に心当たりがある方はいらっしゃいませんか。 よろしくお願いいたします。

  • 同一フォルダ内に一見同じファイル名のファイルができてしまいます

    同一フォルダ内に、一見同じファイル名に見えるファイルができてしまい困っています。 文字列を拾いたいファイルをテキストエディタから開き、半角数字の文字列をコピペし、そのコピーした文字列(半角数字)でフォルダ名を作成しているとたまに半角スペースのようなもの()←カッコ内の文字です。が文字列内に混じってしまいます。 その作成されたフォルダ名は見た目上は()は入っていないのですが、「ファイル名を変更」からコピーし、テキストエディタなどに貼り付けると()が混じっています。 この現象はいつ起こるかはわからなく、同じテキストからコピーしたものでも()が混じるとき、混じらないときがあります。 この謎の文字、()は何なのでしょうか?そしてそれが混じってしまう原因について、何かお知恵をお貸しください。 使用しているOSはWindowsXP Home Edition2002 SP2、使用しているテキストエディタはMKeditorです。 よろしくお願いします。

  • VBA フォルダ内のファイルを、ファイル名順に開く

    【PPT VBA】フォルダ内のファイルを、ファイル名順に開く方法について  今晩は、質問させていただきます。どうぞよろしくお願いいたします。  環境:Win7+PPT2007 になります。  下記のようなコードで、あるフォルダ内のファイル群のデータを取得しております。 「ファイル名順」でデータを取り出したいのですが、違う順(おそらく日時順)で 出てくるので悩んでいる次第でございます。  検索いたしておりますと、ハードディスク等の環境によって検出順が異なるようでございましたが 何か、良さそうな方法がございましたらお教えいただきたくお願いいたします。 Dim File_Collection As Object Dim File_List As Variant Dim Folder_Collection As Object Dim Folder_List As Variant Set File_Collection = CreateObject("Scripting.FileSystemObject") _ .GetFolder(パス).Files For Each File_List In File_Collection      '(名前順では検出してくれません。。。) Next  暫く考えまして、例えば Stringの配列を用意しておいて一旦、上記コードでファイル名とパスをリスト化 →配列の文字列を登り順に、Sort →これの順にファイルを開いていく などという事を思いつきました。しかしファイル数が多いため(100~500個でございます)、 これらの長いパスを配列に入れるというのも、メモリに負担がかかる(?)のかな などと考えている次第でございます。  他に、配列の代わりにエクセルを一旦開いて、そこでソート・・・・・とも考えましたが 友人達に使っていただく可能性があり、余りスマートな解決策ではなさそうですので それよりは上記の「配列でソート」を優先したい次第でございます。  コーディングで何か良い方法があれば良いのでございますが、 他の方法でも結構でございます。もし「自分なら、こうするかな」といった ようなご意見などございましたら是非、ご紹介いただけないでしょうか。  もしお詳しい方がいらっしゃいましたら,どうぞよろしくお願いいたします。

  • エクセルVBAでフォルダ指定後、フォルダ内のファイル操作について

    あるフォルダ内に大量のフォルダ(フォルダ名は日時)があり、その各フォルダ内にテキストファイルが001.txt、002.txtとあります。 それぞれのテキストファイルの名前をフォルダ名(日時)とテキストファイル名を組み合わせたファイル名にしたいです。 イメージ)  最初に大元のフォルダを選択。     ↓  選択されたフォルダ内にある大量のフォルダから  それぞれのフォルダ名をフォルダ内のテキストファイルへファイル名を変更する。 例)フォルダ名「2006-08-28 11-30」   テキスト名「001.txt」   このファイルを「2006-08-28 11-30-001.txt」 みたいにしたいです。 非常にわかりにくいかもしれません。。 これができると非常に助かりますので、是非ご教示お願いします。

  • VBSを使ったファイル検索

    お世話になっております。 VBSを使い、特定のフォルダに対して、タイムスタンプ(最終更新日)が今日と昨日のファイルを抽出したいと思っています。 Dim T,Y T = Date () Y = DateAdd("d",-1,Today) とすれば、今日と昨日の日付を得られますが、 この変数 TとY を使って、タイムスタンプでファイルを抽出、ソートすることはできるのでしょうか? サンプルコードや参考になるサイトがあれば教えていただきたいと思っています。 初心者な質問で恐縮ですが、知恵を貸して頂けないでしょうか。 よろしくお願いします。

  • 【VBS】古い日付のフォルダを削除したい

    あるフォルダ(C:\test\)内のフォルダ名が日付形式(YYYYMMDD)のものの中で、 一番新しい日付のフォルダを残し、古い日付のフォルダを削除したいです。 日付が新しいか古いかは、フォルダ名で判断。作成日時で判断するのではない。 C:\test\フォルダには、日付形式(YYYYMMDD)のフォルダとそれ以外の名称のフォルダ、ファイルが含まれます。 例ですが、C:\test\フォルダに以下のフォルダ・ファイルがあるとして、 C:\test\AbcD1\ C:\test\20130601\ C:\test\20130611\ C:\test\Aiueo2\ C:\test\aa2.log C:\test\20130602\ C:\test\20130605\ C:\test\20130614\ C:\test\Zxy2\ C:\test\aaa.txt 削除するのは、 C:\test\20130601\ C:\test\20130611\ C:\test\20130602\ C:\test\20130605\ です。 以下のフォルダについては、フォルダ名が日付形式(YYYYMMDD)ではないので、 削除しません。 C:\test\AbcD1\ C:\test\Aiueo2\ C:\test\Zxy2\ 以下のフォルダについては、フォルダ名の日付が最新のため、 削除しません。 C:\test\20130614\ ファイルについては、削除しません。 C:\test\aa2.log C:\test\aaa.txt フォルダの一覧を取得するvbsは作成できました。 ですのであとは、 1.日付形式のフォルダを取得 2.最新の日付形式のフォルダ名を取得する 3.最新以外の日付フォルダを削除する 部分ができれば、できそうです。 サンプルソースや参考サイトを教えてください。