アプリ版:「スタンプのみでお礼する」機能のリリースについて

コマンドプロンプトでのバッチ処理についてお伺いします。

【環境】
Windows XP SP3

【要件】
特定ディレクトリにあるファイルにおいて、○○Byte以下のファイルを削除する。

上記の要件に則ってバッチファイルを作成する事となりました。全くの無知で検索した所、
下記のサイトに辿り着き、お知恵を拝借させて頂きました。

http://www.fpcu.jp/dosvcmd/bbs/log/delerase/4-00 …

--------------------
@ECHO OFF
FOR /F %%F IN ('dir /B') DO ( CALL :CheckFile %%F )
EXIT /B

:CheckFile
SET FileAttrib=%~a1
IF NOT %FileAttrib:~0,1%==d (
IF %~z1 == 0 (
ECHO "%1" はファイルサイズが 0 なので削除します。
REM DEL %1
)
)
EXIT /B
--------------------

いくつかの文献を読み、大方の内容と要件に沿った処理を行えるまでには至ったのですが、
どうしても6-7行目を理解する事が出来ません(IF処理では無く、FileAttribの行り、SET処理についてです)。

どなかたご教示頂けないでしょうか。

A 回答 (1件)

SET FileAttrib=%~a1



上記は、FileAttrib変数に'dir /B'で出力されたファイルの属性を代入します。

以下の「バッチパラメータ・修飾子」を参考にしてください。
http://ykr414.com/dos/bat.html



IF NOT %FileAttrib:~0,1%==d (

上記は、FileAttrib変数の1文字目がd以外であれば次の処理を実行します。
(属性の1文字目がdとは、ディレクトリを意味します。)

文字列変数の1部分だけを抽出する方法については、以下のURLを参考にしてください。
http://www.atmarkit.co.jp/fwin2k/win2ktips/419ba …

つまり、バッチファイルの処理内容としては、ディレクトリ以外のファイル
のみに関してファイルサイズをチェックし、ファイルサイズが0バイトの場合
には削除する内容となります。
    • good
    • 0
この回答へのお礼

大変解りやすいご説明ありがとうございました。

どうやら当方はSETコマンドそのものを誤って理解していたようです。
ご説明頂きました内容で無事に理解する事が出来ました。要件自体は
すでに完遂しておりますが、ここから発展させてスマートな処理に
繋げたいと思います。

お礼日時:2009/03/31 11:50

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