• 締切済み

フォルダ内取得について

質問です。 「あるフォルダ以下にあるファイルをすべて取得する」で、 Dim files As New ArrayList '"C:\My Documents"以下のファイルをすべて取得 GetAllFiles("C:\My Documents", "*.*", files) 'ListBox1に結果を表示する ListBox1.Items.AddRange(files.ToArray()) でフォルダ内を取得する方法は分かっていますが、 この取得したファイル以外で特定のファイル以外を 削除する事は出来ますでしょうか? 例えば Test1.txt←必要 Test2.txt←不要 Test3.txt←必要 でファイル取得した時に ("Test1.txt")と("Test3.txt")だけ残して 他は削除したいのです。 必ずしも"test2.txt"という名前ではありません。 この行動を文法(ソース)を書きたいのですが、 分かりません。 どなたか教えてください。

みんなの回答

回答No.3

> でファイル取得した時に > ("Test1.txt")と("Test3.txt")だけ残して > 他は削除したいのです。 「削除したい」 という要望のところを具体的に。 1. 実際にファイルを削除する 2. リストボックスに登録したくない 1 の場合、GetAllFiles 関数が ArrayList にファイル群のパスを格納する目的の機能であれば、その中に削除を実装するのは不適当かと思います。汎用性が失われそうな気がします。 先にファイル削除を行ってから GetAllFiles 関数を呼び出すのがよろしいかと。 2. の場合、ArrayList に入れたくないファイルのリストを引数で与えるとか。 Function GetAllFiles(aParentPath As String, aFileName As String, aDestinationArray As ArrayList) の他に Function GetAllFiles(aParentPath As String, aFileName As String, aDestinationArray As ArrayList, aOmitList As ArrayList) なんて関数も作るとか。

回答No.2

GetAllFiles()という関数がどのような結果をfilesに格納するのか不明だったのであいまいに書きました。 もし、filesに格納されているのがフルパスのファイル名なら Kill files(index) の形式でファイル削除が出来ます。 でもこの程度のことなら、ヘルプや参考書をみれば5分で判ることだと思うけど...

回答No.1

("Test1.txt")と("Test3.txt")だけ残して他は削除するのなら、 FileName = ※※Filesの中の1ファイル名からパス部分を取り除いた名前※※ If (FileName <> "Test1.txt") And (FileName <> "Test3.txt") Then ※※FileNameで示されるファイルの削除処理※※ End If

Plick
質問者

補足

回答有難うございます。 少し理解出来ないのですが、 f (FileName <> "Test1.txt") And (FileName <> "Test3.txt") Then ※※FileNameで示されるファイルの削除処理※※ End If の※※FileNameで示されるファイルの削除処理※※が 理解出来ません。 もう少し詳細に明記出来ないでしょうか?

関連するQ&A

  • リストボックスにファイル名のみを表示するには?

    いつもお世話になっています。 今、VisualStudio.NETのVB.NETを使用して勉強しているものです。 現在、特定のフォルダからその中に入っているファイルを リストボックスに表示させたいと思っています。 フルパスを表示させることはできたのですが、ファイル名のみの表示がうまくいきません。 どなたか教えていただけないでしょうか。 以下のようにコードを書いております。 一度、TextBox1にフォルダのパスをコピーする仕組みになっています。 GetFileName関数を使用すればいいのかもしれませんが、 うまく組み合わせることができません。 どうぞよろしくお願いいたします。 Private Sub GetAllFiles(ByVal folder As String, _ ByVal searchPattern As String, ByRef files As ArrayList) 'folderにあるファイルを取得する Dim fs As String() = _ System.IO.Directory.GetFiles(Me.TextBox1.Text, searchPattern) 'ArrayListに追加する files.AddRange(fs) End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Dim subFolders As New ArrayList() Dim files As New ArrayList() 'TextBox1以下のファイルをすべて取得 GetAllFiles(Me.TextBox1.Text, "*.*", files) 'ListBox1に結果を表示する Me.ListBox1.Items.Clear() Me.ListBox1.Items.AddRange(files.ToArray()) End Sub

  • フォルダの中の特定のファイルを取得

    (VB.NET) Dim files As String() = System.IO.Directory.GetFiles("C:\aaa", "*", System.IO.SearchOption.AllDirectories) ListBox1.Items.AddRange(files) 上記のコードでは"C:\aaa"以下のすべてのファイルを取得しますが、 例えばGetFilesメソッドの2番目のパラメータに "*.(html|htm)"などと指定して(この場合は無理でしたが)"C:\aaa"以下の拡張子が「html」または「htm」のファイルを取得するにはどうすればよいでしょうか。 "*.html"のように1種類の場合はできるのですが…。

  • 【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.最新以外の日付フォルダを削除する 部分ができれば、できそうです。 サンプルソースや参考サイトを教えてください。

  • フォルダ内のファイル名を取得、エラーになる原因は?

    指定したフォルダ内のファイル名を1つずつ取得するサンプルコードです。 function ForlderInImgGet() { CR = String.fromCharCode(13); folder = new Folder ("../img/"); files = folder.getFiles(); for (i=0; i<files.length; i++) { txt = txt + files[i].fullName + CR; } alert(txt); } 実行すると「Folder is not defined」というエラーになってしまいます。 画像ファイルは、 ルートディレクトリ\test\img\に01.jpg~10.jpgがあります。 jsファイルは、 ルートディレクトリ\test\js\に配置してあります。 一体なぜこのようなエラーが出てしまうのでしょうか。

  • 取得したファイル名から拡張子の削除について

    BATにおいて「C:\test」フォルダに格納されているファイルに対してファイル名を取得後、取得したファイル名から拡張子を削除したファイル名を変数にセットしたいと考えていますが、どのようなロジックにしたらいいかご教示頂けますようお願い致します。 実際のファイルの拡張子は削除せず、表示されたファイル名の拡張子を削除したファイル名を変数にセットしたいと考えています。 ------------------------------------------------------------------------------- set FOLDER=C:\test for /f "usebackq" %%i in (`dir %FOLDER% /B *.txt`) do ( echo %%i pause ) ------------------------------------------------------------------------------- -------------------------------------------------------------------------------- C:\testの中身 a.txt bb.txt ccc.txt dd.txt e.txt -------------------------------------------------------------------------------

  • MYドキュメントの中にシステムフォルダ?(再)

     ※同様の質問をあげておりますが、現象記述に間違いがありましたので、訂正して再掲いたします。  ノートブックでWindows2000を使っていますが、タッチパッドが妙に感度が良いせいでしょうか、エクスプローラをいじっていてチョイトよそ見をしているうちに、変な処理をしてしまったようです。現象は以下の通りです。 「C:\」の上位の「MYコンピュータ」と同列にある「Myドキュメント」配下の中身に  ・「本来のMYドキュメントフォルダにあるはずの自作ファイル」これはいいとして  ・「WINNT」やら「Documents and Settings」といった「本来C:\配下にあるフォルダとファイル」 の両方とも表示されている。 「C:\」配下にも「本来MYドキュメントフォルダにのみあるはずの自作ファイル」が表示されています。 双方のフォルダから、不要な「本来あるべきではないフォルダ・ファイル」を削除しようとすると以下の現象が発生します。 MYドキュメントから「WINNT」や「Documents and Settings」を削除しようとした場合:「システムに必要なファイルだから削除できない」 C:¥から自作ファイルを削除した場合:同列にある「MYドキュメントフォルダ」からも同名ファイルが削除されてしまう。 単に表示上の問題なのか、ハードディスクを無駄に食っているのか、気持ち悪いのでスッキリさせたいのです。 「過去に同様の質問があった」でもかまいません。お助けをm(__)m

  • My Documents 以下のフォルダの削除

    My Documents 以下のフォルダが削除できなくなってしまいました。 ファイルは削除できてフォルダのみが削除できません。 ロックはされていないようです。 コマンドプロンプトからは rmdir で削除できます。 試しに test という簡単な名前のフォルダを作成してみましたが同様に削除できませんでした。 フォルダの移動はできます。 他のフォルダ(例えばデスクトップ等)に移動して削除すれば削除できます。 My Documentsのプロパティを見ると「読み取り専用」に■がついています。 解除して一度閉じてもう一度プロパティを開くと■になっています。 (管理者権限でログオンしています) My Documents以下に作成したフォルダのプロパティにも同様に読み取り専用に■がついています。 何故なのでしょうか? ご存知の方がいらっしゃいましたら教えて下さい。

  • 特定フォルダ内のファイル名取得について

    こんばんわ。お世話になってます。 あるフォルダ内(C\MyForder)に保存している様々なファイル名(エクセルやワード等が保存) をUserForm内のListBoxに表示させたいのですが、どのようにしてファイル名を取得したら良いのでしょうか? また、ListBoxに表示されたファイル名を選択すると、そのファイルを 起動させたいと思っています。ご教示お願いします。

  • フォルダ内のファイル名取得の仕方が分かりません

    Apache2.0.47、PHP4.3.2で使用しています。 フォルダ内のファイル名の取得を以下のように書いています。 (scandirは使えませんでした) <?php $dir = "test_dir"; $dh = opendir($dir); while (false !== ($filename = readdir($dh))) { $files[] = $filename; } sort($files); print_r($files); ?> "."と".."も取得されるので、以下のように変更したのですが同じ結果でした。 <?php $dir = "test_dir"; $dh = opendir($dir); while (false !== ($filename = readdir($dh))) { if(filename!=". "){ if(filename!=".. "){ $file[] = $filename; } } } sort($files); print_r($files); ?> "."と".."をはぶいたファイル名だけを取得したい場合にはどうすればよいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • フォルダの表示形式を指定したフォルダ内全てに設定する方法を教えて下さい

    フォルダの表示形式を指定したフォルダ内全てに設定する方法を教えて下さい。 表示形式をすべてのフォルダに適用する設定は、フォルダオプションの表示タブにある「フォルダの表示」から設定しますが、指定したフォルダ内だけに設定できる方法はありますでしょうか。 例 C:\Documents and Settings\USER\My Documents\My Pictures\2009.1\TEST12.jpg C:\Documents and Settings\USER\My Documents\My Pictures\2010.1\TEST01.jpg C:\Documents and Settings\USER\My Documents\My Pictures\2010.2\TEST02.jpg C:\Documents and Settings\USER\My Documents\My Pictures\2010.3\TEST03.jpg C:\Documents and Settings\USER\My Documents\My Pictures\2010.4\TEST04.jpg My Pictures内にある年月名のフォルダ全てに表示形式を設定したいのです。 以上よろしくお願いします。

専門家に質問してみよう