2008年4月16日水曜日
フォルダ(ディレクトリ)が空かどうか

客先によっては、自分なりの環境を整えるのが難しいところがある(最近は多い)。
なので、バッチファイルって意外と重宝する。

でもって、気になって調べてみると、今更ながら情報って少ないねぇ。
なんつーか、探しきれてないのだろうけど。

で、ここ数日悩みのタネだったのが、タイトルにあるとおり、フォルダの中身の調査。
何故必要かはおいといて、調査結果を…

基本、2ch情報だけど、こういうのがあった。

ユーザー必読!コマンドライン(DOS Pt.6)
http://pc11.2ch.net/test/read.cgi/win/1176558776/124-125

124 :名無し~3.EXE:2007/06/16(土) 19:02:59 ID:CXEmvWRn
DIR /B "C:\hoge" | FIND /V "" > NUL で ERRORLEVEL=1 なら空。
ってのは強引?

125 :名無し~3.EXE:2007/06/18(月) 01:45:27 ID:H6wUdAfo
読みやすさ優先ならfor /r と set /a ってなところだろうけどねぇ


124のは単純だね。DIRで取得した結果が空じゃなければERRORLEVELは0だから。
あとはIF文をどうするかってことだね。

ってことで、125のやつ。
これは、FORでフォルダ内部のファイルを列挙して、SET /Aで数を数えるってことかな?
@ECHO OFF
SET /A CNT=0
FOR /R パス %I IN (*) DO (
SET /A CNT=CNT+1
)

これでCNTがゼロでなければファイルはあることになるので、フォルダは空じゃないと…

しかし、SETで計算できるの知らなかったな。
もう少し、修行が必要かな?


2008/05/01 - 追記
バッチファイルなら、%を重ねないといかんなぁ。
ケアレスミスです。
で、ECHOしてみた。
@ECHO OFF
SET /A CNT=0
FOR /R パス %%I IN (*) DO (
SET /A CNT=CNT+1
)
ECHO %CNT%

こういうのを知ってると、結構使える場面が… ないか。



0 コメント | コメントを書く
Template Design: © 2007 Envy Inc.