これまでで一番「情けなかったとき」はいつですか?

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

OS:WindowsXP

以上、よろしくお願いいたします。

A 回答 (4件)

追記



必ず「fcとfindがちゃんと動いている」のを確認してから実行すること。

本番の実行前に
del %1
の行を
echo %1 >> result.txt
に変更しておき、最初にいきなりファイルを消させず、消すはずのファイル一覧をresult.txtに出力させておき、result.txtに希望通りの結果がリストされたか確認しておく事。

確認して消してはいけないモノが消される対象になってないか確認し、確認してから変更した行を
del %1
に戻して、本番実行すること。

間違って消しちゃいけないファイルが消されても責任は取れないので、実行は自己責任で、バックアップを取ってから行なうこと。
    • good
    • 1
この回答へのお礼

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

お礼日時:2007/11/01 17:48

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
    • good
    • 6
この回答へのお礼

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

お礼日時:2007/11/01 17:47

xp だという前提なら



for %i in (*.*) do if %~zi EQU 0 echo %i

で、ファイルサイズが0バイトのファイルを列挙できますので、
上の例で echo しているところをdelにするなり
なんなりすればよろしいかと。

多分 cmd.exeが使えるならどのWindowsでもいけます。
    • good
    • 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.バッチファイルを実行するカレントディレクトリは、書き込み可能、ファイル作成可能であること。
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報