- ベストアンサー
ファイル操作の自動化
プログラムに関して素人で、どのカテゴリで質問をしたらよいのかわからなかったので、ここで質問させて頂きます。もし、不適当であるならご指摘ください。 質問の内容は、下記のファイル操作を自動化したいのです。何かのアプリを使えばいいのか、あるいは自分でスクリプトのようなものを組めばいいのかそれすら見当がつきません。 よろしくお願いします。 なお。OSはWinXPです。 1.ひとつのディレクトリ(フォルダ)を指定する。 2.いくつかあるファイルの中から、あるサイズ以上のファイルを抽出する。 3.抽出したファイルをすべて、別のフォルダを指定して移動させる。 4.残ったファイル(あるサイズ以下のファイル)をゴミ箱に移動させる。 5.上記1に戻って、別のフォルダを指定する。 6.上記1から5をループさせて、操作が終了したら終わり。 先に、移動させたいフォルダを指定させておくことができれば、もっとよい。 以上です。 PCを相手に、自分が単純な操作をすることこそ意味がないことだと思います。 ご教示くだされば幸いです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
'こんな感じで Limit = 100 * 1024 '削除するファイルサイズの閾値 MoveTo = "C:\Temp\" '削除しないファイルの移動先 '各種オブジェクトの作成 Set FSO = CreateObject("Scripting.FileSystemObject") Set Sh = CreateObject("Shell.Application") '移動先フォルダが無い場合は作成 If Not FSO.FolderExists(MoveTo) Then FSO.CreateFolder(MoveTo) '削除するファイルの一時移動先を作成 tempTrash = MoveTo + "Trash" + Replace(Time, ":", "") + "\" FSO.CreateFolder(tempTrash) 'ドロップされたフォルダ毎にElectFilesを呼び出し For each FolderName In WScript.Arguments ElectFiles FolderName, MoveTo, tempTrash Next '一時移動先のフォルダをごみ箱に移動 Sh.NameSpace(tempTrash).Items.Item.InvokeVerb "削除(&D)" 'サイズによりファイルを振り分け Sub ElectFiles(FolderName, Grater, Less) If Not FSO.FolderExists(FolderName) Then Exit Sub Set Folder = FSO.GetFolder(FolderName) For each File In Folder.Files If File.Size > Limit Then File.Move Grater Else File.Move Less Next End Sub '以上をメモ帳にコピーして拡張子をvbsとして保存してください。 'フォルダをドロップ(複数可)すると、その中のファイルを処理します。 'ファイルサイズの指定は上のほうにあるLimit、移動先フォルダはMoveTo(最後は必ず\に)を直接編集して指定してください(インターフェースは面倒なので省略しました)。 'ElectFilesサブルーチンに少し書き加えれば、ドロップしたフォルダのサブフォルダも潜っていって処理するようになります。 'ごみ箱へ移動ではなく、直接削除ならもう少し簡単になります。 'その気があるなら、適当なインターフェースを作ってLimitとMoveToの内容をレジストリやINIファイルに記録できるようにしてやってください。
その他の回答 (3)
- selju
- ベストアンサー率57% (100/173)
プログラム言語への敷居が高いと感じる場合は、 日本語プログラミング言語を利用する手もあります。 日本語プログラミング言語「TTSneo」 http://hp.vector.co.jp/authors/VA021321/index.html 基本的なことしか出来ませんが、 上記の内容ぐらいであれば作ることは可能かと思います。 「小学生から使える」フリーソフトなので、 一度試してみては如何でしょうか。
お礼
ありがとうございます。 お礼が遅れましてすみませんでした。 精進あるのみ・・・です。
VB関連のBBS、ML等で「Dir関数」または、「FSO」(FileSystemObject) をキーワードに検索すれば、有益な情報が得られると思います。 http://fukkey.dyndns.org/cgi-bin/namazu.cgi?idxname=all%2Fvb&idxname=all%2Fcurrent%2Fvb&idxname=all%2Facc&idxname=all%2Fcurrent%2Facc&max=20&sort=date%3Aearly&query=FSO+or+FileSystemObject+or+Dir%B4%D8%BF%F4&submit=%B8%A1%BA%F7&whence=0&reslt=normal&sort=score プログラミング経験が少ない、とのことですので、VBScript よりExcel、または、Access のVBAのほうが扱いが容易だと思います。 > 4.残ったファイル(あるサイズ以下のファイル)をゴミ箱に移動させる。 の処理については、下記のAPIで実現できるはずです。 Public Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (ByRef lpFileOp As SHFILEOPSTRUCT) As Long
お礼
事情により、お礼が大幅に遅れました。 どうもありがとうございました。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
VBScriptとかJScriptでできますね。
お礼
お礼が遅れまして申し訳ありませんでした。 ありがとうございました。
お礼
お礼が遅れましてすみませんでした。 ありがとうございました。 ご丁寧に説明してくださって、本当に感謝です。 少しずつ理解していこうと思います。