• ベストアンサー

0バイトファイルの判断

Windowsのバッチ処理についての質問です。 バッチから0バイトファイルを判断し削除するというようなものを作りたいです。 例えば、 C:\TEMP内にある0バイトのファイルを全て削除 上記のようなものをif文等で判断させることは可能でしょうか? OS:WindowsXP 以上、よろしくお願いいたします。

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

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.3

追記 必ず「fcとfindがちゃんと動いている」のを確認してから実行すること。 本番の実行前に del %1 の行を echo %1 >> result.txt に変更しておき、最初にいきなりファイルを消させず、消すはずのファイル一覧をresult.txtに出力させておき、result.txtに希望通りの結果がリストされたか確認しておく事。 確認して消してはいけないモノが消される対象になってないか確認し、確認してから変更した行を del %1 に戻して、本番実行すること。 間違って消しちゃいけないファイルが消されても責任は取れないので、実行は自己責任で、バックアップを取ってから行なうこと。

kal1119
質問者

お礼

ご回答ありがとうございました。 参考になりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • Werner
  • ベストアンサー率53% (395/735)
回答No.4

forのヘルプ(for /?)を見ると以下の記述が見つかりました。 > %~zI - %I ファイルのサイズに展開します。 なのでこれを使ってファイルサイズを取得できると思います。 以下はサンプルコードです。 ---------------------------------------------------------- REM カレントディレクトリのファイル名とファイルサイズを表示 FOR %%I IN (*) DO ECHO %%I %%~zI REM カレントディレクトリの*.txtファイルの内、サイズ0のものを削除 FOR %%I IN (*.txt) DO IF %%~zI==0 DEL %%I

kal1119
質問者

お礼

ご回答ありがとうございました。 参考になりました。

全文を見る
すると、全ての回答が全文表示されます。
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

xp だという前提なら for %i in (*.*) do if %~zi EQU 0 echo %i で、ファイルサイズが0バイトのファイルを列挙できますので、 上の例で echo しているところをdelにするなり なんなりすればよろしいかと。 多分 cmd.exeが使えるならどのWindowsでもいけます。

全文を見る
すると、全ての回答が全文表示されます。
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

・0バイトのファイルを作る方法 echo "" | find "@@" > zero.tmp ・0バイトのファイルかどうか調べる方法 fc /b 対象ファイル zero.tmp | find "FC: 相違点は検出されませんでした" > NUL ・調べた結果を判断する方法 if errorlevel 1 goto skip 完成したバッチファイル @echo off echo "" | find "@@" > zero.tmp fc /b %1 zero.tmp | find "FC: 相違点は検出されませんでした" > NUL if errorlevel 1 goto skip del %1 :skip del zero.tmp 使い方 上記のバッチファイルをzerodel.batとして保存し、 C:\>cd \temp C:\TEMP>for %f in (*.*) do call zerodel.bat %f と実行。 *注意* 1.標準DOSコマンドのfc.exe、find.exeがインストールしてあること。 2.fc.exe、find.exeにパスが通してあること。 3.WindowsXPではfc.exeが「FC: 相違点は検出されませんでした」のメッセージを出すが、Windows98では「FC: 違いは見つかりませんでした.」のメッセージを出すのでOSの違いに注意すること。 4.バッチファイルを実行するカレントディレクトリは、書き込み可能、ファイル作成可能であること。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • バッチファイルの組み方について

    パソコンの起動と同時に不要なファイルを自動的に削除したいと思い、バッチファイルを組みたいのですが、分からない点があるのです。 今、 C:\Windows\Temp\*.tmp と C:\Program Files\Trend Micro\Virus Buster 2002\temp\*.tmp の2カ所に存在するtempファイルの削除をバッチファイルを組んで行いたいのです。 一つの時(上段1つの時)は autoexe.batに if exist c:\windows\temp\*.tmp del \windows\temp\*.tmp と命令文を入れて、上手くいっていたのですが、2カ所にある時の組み方が分かりません。 具体的にどの様にすれば、上手くいくでしょうか? if exist C:\Program Files\Trend Micro\Virus Buster 2002\temp\*.tmp del C:\Program Files\Trend Micro\Virus Buster 2002\temp\*.tmp ともう一行実行文を入れた場合は上手くいきませんでした。 ご存じの方、よろしくお願いいたします。

  • バッチファイル 文字列操作のやり方

    お世話になります。 バッチファイルのコマンドについてですが、 for文の中で 一番下の階層のファイル名の先頭5バイトが "abcde"のものだけ処理対象にしたいと考えています。 例えば、 C:\tempに以下のファイルがあったら C:\temp\abcdefg.txt    ・・・(1) C:\temp\xxxxxxx.txt    ・・・(2) C:\temp\abcde.txt    ・・・(3) C:\temp\abc.txt    ・・・(4) C:\temp\abcdezzzz.txt    ・・・(5) (1)、(3)、(5)だけを処理させたいと考えています。 実装方法として、以下を考えましたがうまくいきません。 dir /s /b /a-d C\Temp > file.txt for /f "delims=" %%F in (file.txt) do ( set A=%%~nF% if "%%A:~0,5%"=="abcde" ( <処理コマンド> ) ) おそらくfor文の中で何個も命令を記述できないということと、 パラメータ修飾子の指定が間違っているからだと思われますが、 うまくできない理由を知りたいです。 よろしくお願いいたします。

  • 指定日数経過したファイルをバッチを使って削除する方法

    お世話になります。 今回質問したいのは、あるフォルダ内で作成から5日経過したファイルを削除するバッチの作成方法です。 例えば del /s /q "c:\temp" これを実行するとtempフォルダ内のファイルがサブフォルダを残してすべて削除されます。 これを「作成から5日経過したもののみ」と条件をつけたいのです。 あと、できたら「5日以上アクセスのないもの」という条件もあわせて教えていただければ幸いです。 今回業務の関係で上記処理をバッチでの実行に限定されています。 VBSなどでもできるとは思いますが、バッチコマンドを教えていただければと思います。 わがままを言って申し訳ありませんが、よろしくお願いします。

  • コマンドプロントでファイルの削除方法

    コマンドプロント初心者です。 やりたいことは、バッチ処理にて、指定したフォルダ内の「*.dat」ファイルを削除することです。 ネットで調べてみたんですが、削除されません。 また、削除してよいかの確認メッセージも表示されません。 何が悪いのかご教授お願いします。 以下が作成したバッチファイルの中身です。 -- ********************************** -- Outlook 2010 添付ファイルのキャッシュを削除する -- ********************************** C:\Temp>del *.dat C:\Temp\*.dat、よろしいですか (Y/N)?

  • ファイル削除について

    ファイル削除について C:\temp\111-001-会計.txt C:\temp\111-001-人事.txt C:\temp\111-001-総務.txt C:\temp\111-001-販売.txt このようなファイルがあったとします これをワイルドカードを使って"111-001*" というファイル全てを削除するプログ]ラムを 教えてください ちなみにディレクトリは相対パスで指定できる ようにしたいです 自分でも作成してみたのですが ファイルのあいまい検索ができず困っているところです また1件しか削除できないのでfor文か何かで回すのかなといった感じです Public Sub DeleteFile(ByVal folder As String, ByVal searchPattern As String) Dim stFileName As String = System.IO.Path.GetFileName(folder + searchPattern) If System.IO.File.Exists(folder + searchPattern) Then System.IO.File.Delete(folder + searchPattern) MessageBox.Show("ファイルを削除しました") End If End Sub

  • バッチファイルでのエラー処理の方法を教えてください

    バッチファイルでのエラー処理の方法を教えてください 例えば、以下のようなバッチファイルがあったとき echo ▼ フォルダ名を入れ替えます(処理1) cd "C:\Test1" move Work temp move Work_bak Work move temp Work_bak echo ▼ フォルダ名を入れ替えます(処理2) rem cd "C:\Test2" move Work temp move Work_bak Work move temp Work_bak (処理1)の時に、 「プロセスはファイルにアクセスできません。別のプロセスが使用中です。」 等のエラーによって、フォルダ名の変更ができなかったとき、 そのエラーがでた以降の処理を行いたくないのですが、 どのように書けばよろしいのでしょうか? 宜しくお願いいたします。 OSはWindows系です。

  • WindowsのTenpファイルにメールの文章があふれています

     ウィンドウズのTemp fileに「WebPoolFileFile」というわけの分からないファイルができていてTemp fileに異常に多くのメールのテキスト文書がたまってしまいます。  何百ものテキスト文書がたまっていたので昨日消そうとしたのですが、ファイルの削除エラーになってしまい、「すべてを選択 削除」を使うことができず、一つづつ消すこととなりました。  今日開いてみるともう80個のテキスト文書がたまっていました。  どうしたらいいのでしょうか?   WebPoolFileFileてなにものですか?  おわかりの方教えてください。 エラー文 WebPoolFileFileを削除できません。アクセスできません。 ディスクがいっぱいでないか、ライトプロテクトされてないか、またはファイルが使用中でないかを確認してください。 WebPoolFileFileのプロパティ  MSーDOSファイル名 WEBPOO‘1   サイズ 261バイト(261バイト)、4.096バイト使用   場所 C:\WINDOWS\TEMP   属性 アーカイブ   作成日時 2001年5月21日 

  • バッチファイル ファイル名の変更

    お世話になります。 バッチファイル(*.bat)の開発をしています。 現在、 C:temp\20100101\xxx.data1.file.log.dat というパスがあるとして、ファイル名だけに対し、 .(ピリオド)をなくしたいと考えています。 つまり、上記のファイルを、 C:temp\20100101\xxxdata1filelogdat のように置き換えたいと思っています。 .(ピリオド)をブランクに置き換えると C:temp\20100101\xxx data1 file log dat のようになってしまうので、隙間ができないようにしたいです。 実装方法をご教授頂けますでしょうか。

  • サブルーチンの使用方法

    下記のような処理をするバッチファイルを作成しています。 同じ処理をしているので、サブルーチンを使って、 もっと分かり易くまとめたいのですが、やり方がわからず困っています。 サブルーチンの概要は分かるのですが、その使い方がいまいち分かりません。 どなたか分かる方がいらっしゃれば、教えて頂きたいと思っています。 よろしくお願いします。 環境としては、Windows Server 2003です。 if  exist  C:  (   コマンド文 ) if  exist  D:  ( コマンド文 )     ・     ・     ・ 以下、『if  exist  E~Z:』として処理を行う。

  • Tempファイルについて

    こんばんわ。私のCドライブにはTempフォルダというのがあって、中にはTempファイルが数千個(2GB)もありますが、これは何のファイルなんでしょうか?全て削除しても構わないファイルなんでしょうか?教えて下さい。