• ベストアンサー

バッチファイルが作成可能でしたら教えてください

指定フォルダの最新のファイルを (グローバル)ホットキーを押すだけで 移動、もしくは削除したいのですがバッチファイルで可能でしたら 作り方を教えてください

質問者が選んだベストアンサー

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6635/9401)
回答No.4

>同じ条件で他のフォルダに移動するというプログラムも >作って頂けないでしょうか? .delete を .move にして、移動先フォルダを指定すればOKです。 ---- move_newer.vbs ---- dim fso set fso = createObject("Scripting.FileSystemObject") dim folder set folder = fso.getFolder("C:\Users\…\監視フォルダ\") dim newerdate dim newerfile dim file for each file in folder.files ' msgbox file.Name & " " & file.DateLastModified '#debug if newerdate < file.DateLastModified then newerdate = file.DateLastModified set newerfile = file end if next if IsObject(newerfile) then ' msgbox "move: " & newerfile.name '#debug newerfile.move "C:\Users\…\移動先フォルダ\" 'フォルダ指定は末尾「\」で end if ---- ここまで ---- ただし、何度も同じファイル名が生成される場合、移動時に「同名ファイルがある」というエラーが生じて、止まってしまいます。 その対策もしますか?

yorodesu1
質問者

お礼

ありがとうございます デメリットがなければエラーを避けられるのならば避けたいです もしよろしければお願いしてよろしいですか・

その他の回答 (4)

  • asciiz
  • ベストアンサー率70% (6635/9401)
回答No.5

>デメリットがなければエラーを避けられるのならば避けたいです 移動するときのファイル名がかぶらなければ良いので、ファイル名に日時文字列を加えるという方法があります。 これで、1秒以内に、移動して→同じファイル名を生成して→移動して、をやらない限り、エラーは出ません。 なお Now() では "2021/09/01 12:34:56"みたいな文字列が取得できますが、ファイル名においてスラッシュやコロンはマズいので、Replaceで消してしまっています。(この例だと "20210901 123456"になる) ---- move_newer2.vbs ---- dim fso set fso = createObject("Scripting.FileSystemObject") dim folder set folder = fso.getFolder("C:\Users\…\監視フォルダ\") dim newerdate dim newerfile dim file for each file in folder.files ' msgbox file.Name & " " & file.DateLastModified '#debug if newerdate < file.DateLastModified then newerdate = file.DateLastModified set newerfile = file end if next dim nowstr nowstr = Replace(Replace(Now(), "/", ""), ":", "") if IsObject(newerfile) then ' msgbox "move: " & newerfile.name '#debug newerfile.move "C:\Users\…\移動先フォルダ\" & nowstr & " " & newerfile.name end if ---- ここまで ---- デメリットはファイル名が長くなることですが。 逆に、移動した日時が記録されると言うメリットも生じたことになりますか。

yorodesu1
質問者

お礼

ありがとうございます すごく助かりました

  • notnot
  • ベストアンサー率47% (4847/10260)
回答No.3

> このbatファイル自体が消えました。(他も消えた?) pushdが失敗しているのでは? BATファイルをダブルクリックして実行するなら、末尾に pause を追記して、実行を止めて、エラーメッセージが出てないか確認しましょう。 このbatファイルが消えたのは最新だったからでしょう。 > このbatファイルを含むファイル全部が消えました。 1回の実行で複数のファイルが消えることはあり得ないので、なにか違うファイルを実行したんだと思います。

yorodesu1
質問者

お礼

なるほど batファイルそのものも消えるんですね ありがとうございます

  • notnot
  • ベストアンサー率47% (4847/10260)
回答No.2

可能です。 pushd D:\foo\bar\baz ・・・指定フォルダー for /f "delims=" %%A in ('dir /o-d /a-d /b') do ( del "%%A" exit /b ) というBATファイルを作って、そのショートカットをデスクトップに置き、ショートカットのプロパティーでショートカットキーを設定します。 説明としては、ファイル名を新しい順にファイル名を取得してそれを削除してすぐバッチファイルを終了することで、先頭の1ファイルだけの削除にします。

yorodesu1
質問者

補足

ありがとうございます 具体的にいうとC:\Users\yuu\Desktop\新しいフォルダー (5)の中の最新ファイルを消したいです そして下の記述のテキストファイルを.batに変えてデスクトップ上で実行したところ このbatファイル自体が消えました。(他も消えた?) そしてこのbatファイルをC:\Users\yuu\Desktop\新しいフォルダー (5) の中で使用したところこのbatファイルを含むファイル全部が消えました。 何か間違ってますか? よろしくお願いします pushd C:\Users\yuu\Desktop\新しいフォルダー (5) for /f "delims=" %%A in ('dir /o-d /a-d /b') do ( del "%%A" exit /b )

  • asciiz
  • ベストアンサー率70% (6635/9401)
回答No.1

VBScriptで組んでみました。 ---- delete_newer.vbs ---- dim fso set fso = createObject("Scripting.FileSystemObject") dim folder set folder = fso.getFolder("C:\xxxx\yyyy\…\監視フォルダ\") '書き換えてください dim newerdate dim newerfile dim file for each file in folder.files ' msgbox file.Name & " " & file.DateLastModified '#debug if newerdate < file.DateLastModified then newerdate = file.DateLastModified set newerfile = file end if next ' msgbox "detele: " & newerfile.name '#debug if IsObject(newerfile) then newerfile.delete end if ---- ここまで ---- '#debug がある行の先頭のアポストロフィ「'」を削ると、msgbox により監視フォルダにどんなファイル名を見つけて、その最終更新日がいつで、最終的にどのファイル(一番新しい物)を削除するか、を表示して動きます。 動作確認してみてください。 その動作で良いとなったなら、このvbsファイルのショートカットを作って、そのショートカットにホットキー設定すると、キーコンビネーション一発で消せるようになるでしょう。 ※スクリプトからdeleteするファイルはゴミ箱に入らず直接消えるので注意しましょう。 ※folder.files を更新順に取り出すことができれば、最初の1つを消す、と簡潔にできる気がするんですが。そんなメソッドやオプションは無さそう…?

yorodesu1
質問者

補足

ありがとうございます 動作確認したところ、できました。 ゴミ箱に入らずそのまま消えるということなので 同じ条件で他のフォルダに移動するというプログラムも 作って頂けないでしょうか? よろしくお願いします

関連するQ&A

  • バッチファイル作成について

    いつも参考にさせております。 バッチファイルで指定したディレクトリとそのディレクトリに含まれるサブディレクトリやファイルを全て削除したいと思っております。 例えば… 削除したいフォルダ:binフォルダ、objフォルダ フォルダ構成:C:\Documents and Settings\Kumagai\My Documents\Visual Studio 2005\Projects\WindowsApplication1 WindowsApplication1の直下にサブディレクトリが何個かありその直下にそれぞれbinフォルダ、objフォルダが存在します。 サブディレクトリが10個の場合binフォルダ、objフォルダもそれぞれ10個あるとします。 なおサブディレクトリの数は可変です。 この時、binフォルダとobjフォルダを一遍に削除するにはどのようにバッチファイルに記述すればよろしいのでしょうか? よろしければ教えてください。 環境はWindowXPですが、Vistaにも対応できるとなおうれしいです。

  • バッチファイルの作成

    お世話になっております。 バッチファイルの作成方法について、只今勉強中です。 現在、毎日行われている作業をバッチファイルで自動化が出来ないか検討しておりますが、バッチファイルの編集に苦戦していて困っております・・・ ---実行したい事--- 0.以下、作業の流れをコマンドプロンプト上で表示する。 1.C:\ツール\batというフォルダに移動する。 2.batフォルダに新しく「file」というフォルダを作成 3.batフォルダ内には「bat_YYYY/MM/DD.txt」という日付のテキストがあり、該当する日付のテキストをコピーしてfileフォルダへ貼り付ける。 4.fileフォルダへ移動する。 ---終了--- 手順を全部書いてしまっているのですが、途中まではバッチファイルの編集をする事が出来ました。しかし、正解しているか不安です。 ご教授の程、宜しく御願い致します。

  • バッチファイル

    お世話になります。 PCのセットアップをバッチファイルを使って、 簡略化したいと思っています。(windows xpです。) そこで、パスで指定したファイルを実行したり、指定したフォルダを開く方法を教えていただけないでしょうか。 可能であれば、一つのバッチファイルの実行で、 複数のファイル・フォルダを連続で開ければ非常に助かります。 よろしくお願いします。

  • バッチファイルを変数で作成したい

    3ヶ月前のフォルダを自動で毎月削除したいと考えています。 現在、毎月フォルダが作成されるようにバッチファイルを作成しましたが、今度は3ヶ月経ったフォルダは削除したいと考えています。 たとえば、8月1日に5月のフォルダを削除というようにです。 2008年5月のフォルダ名:200805 2008年6月のフォルダ名:200806 2008年7月のフォルダ名:200807 2008年8月のフォルダ名:200808 毎月フォルダが作成されます。 9月に200809のフォルダを作成し、 200805のフォルダを削除したいです。 200809のフォルダ作成はできましたが、 200805のフォルダを削除するバッチファイルを作成できません。 どうすればいいのでしょうか。 よろしくお願いします。

  • バッチファイル作成について

    WindowsXP環境で、CD-ROMを入れたら、指定したフォルダにCD-ROM内のファイルをコピーする処理をしたいです。 自分の思考では、AUTORUN.inf と aaa.bat(バッチファイル)で処理をしようと思っています。 ***例*** AUTORUN.inf(ファイル内容) [autorun] open=aaa.bat そこで、バッチファイルどう作成したらよいか全くわかりません・・ バッチファイルやオートランの作成手順等が記載してあるHP等を教えて頂くとありがたいです。 どうかご教授お願い致します。

  • ファイルの整理 バッチファイルの作成_2

    フォルダ内にある 複数のフォルダ内に点在する 5000個のファイルのうち エクセルに書かれた1000項目のファイルを取り出し違うフォルダに移したいのですが 現在一つ一つ手作業で、移動させています。 フォルダ構成を守りながら さくっと移動作業が終わらせれる コマンドプロントや、バッチファイルあるいはそういうことができるツールなどあれば ご教授お願いできないでしょうか? 作業としては、単純なのですが、1日つぶしてしまい、時間をもったいなく感じております。 よろしくお願い致します

  • バッチファイルのコマンドについて

    バッチファイルのコマンドについて ウィンドウズです。 バッチファイルにて、大量のファイルの名前を以下の通りにリネームしたいです。 どのようにコマンドを組めばいいのか教えてください。 また、リネームしたファイルは1つ上のフォルダに移動させたいです。 1、ファイルの1~3文字目を削除してリネームして移動するコマンドデータ 2、ファイルの3~5文字目を削除してリネームして移動するコマンドデータ 例:『123456789』というファイル名に対して、 『456789』というファイル名にして移動するコマンドと 『126789』というファイル名にして移動するコマンドが欲しいです。 データは、名前も文字数もバラバラです。 知っている方がいたらお願いします。

  • バッチファイルについて教えてください。

    windows7を使っております。 バッチファイルを作ってスタートアップのフォルダに入れたのですが、パソコンを再起動するとそのバッチファイルがなくなっていました。 (バッチファイル自体ではなく、ショートカットを入れてみても同じ結果でした) バッチファイルとは、一度使うとファイルとしては消えてしまうものなんですか? (ファイルがスタートアップにある間はそのとおりに動き、ファイルを削除すればその効果が なくなるというような使い方ができれば便利なんですが)

  • バッチファイルについて

    ひとつのフォルダーにある、いくつかのファイルから、サイズの大きなものを特定し、別のフィルダーへ移動するdos バッチファイルをお教えいただけないでしょうか? よろしくお願いいたします

  • 今時、バッチファイルは古い?

    日々あるフォルダに入ってくるファイルを、別のフォルダに手作業で移動しています。 なんか面倒になってきたので、バッチファイルでプログラムを作って移動させようかなと思いました。 そこで、ふと思ったのですが、昔の人はバッチファイルを知っているでしょうが、最近の人は知らない人も多いと思います。じゃあ、その人たちはどうやって移動してるんだ?たぶん手作業なのでしょうが、もしかしたら、バッチファイルよりもっと便利な方法があるのかと思い質問します。 バックアップソフトなんて手もあるのでしょうが、これくらいのことなら、バッチファイルのほうがはるかに実用的だと思います。