838) ファイルの中身があるか確認 M 2003/11/10(月) 17:35 |
|
みなさん始めまして DOSに付いては初心者なのでよろしくお願いします。 ファイルの中身があるか無いかを確認してある場合と無い場合との 結果を変数で返して以降のバッチプログラムを動かすかどうかの判断を したいのですが何かいい方法ないでしょうか? 環境はWIN2000,NT4.0です。 |
|
839) Re:ファイルの中身があるか確認 じゃく 2003/11/10(月) 17:44 |
|
>ファイルの中身があるか無いかを確認してある場合と無い場合との >環境はWIN2000,NT4.0です。 ファイルの中身がある、ファイルの中身がないの定義を明確に してください。 ファイルというのはテキストファイルのことですか? ファイルの中身がないというのは? 1)ファイルサイズが0 2)テキストファイルで何も書いていない?その場合、改行コードだけ入っているのは中身がある?ない?どちらでしょう? この部分が曖昧だとだれも回答できないでしょう。 |
|
840) Re2:ファイルの中身があるか確認 M 2003/11/10(月) 17:55 |
|
>>ファイルの中身があるか無いかを確認してある場合と無い場合との >>環境はWIN2000,NT4.0です。 > >ファイルの中身がある、ファイルの中身がないの定義を明確に >してください。 >ファイルというのはテキストファイルのことですか? >ファイルの中身がないというのは? >1)ファイルサイズが0 >2)テキストファイルで何も書いていない?その場合、改行コードだけ入っているのは中身がある?ない?どちらでしょう? > >この部分が曖昧だとだれも回答できないでしょう。 > しつれいいたしました。 早速のご指摘ですが 1)ファイルサイズが0 2}テキストファイルで何も書いていない 3}改行コードも入っていない状態です。 以上のファイル状況です。 |
|
841) Re3:ファイルの中身があるか確認 じゃく 2003/11/10(月) 18:23 |
|
>>>ファイルの中身があるか無いかを確認してある場合と無い場合との >>>環境はWIN2000,NT4.0です。 >早速のご指摘ですが >1)ファイルサイズが0 >2}テキストファイルで何も書いていない >3}改行コードも入っていない状態です。 >以上のファイル状況です。 サイズが0のファイルを判定する方法として、 Windows2000では、for文を使う方法が過去ログにあります。 http://fpcu.on.coocan.jp/dosvcmd/bbs/log/cat3/if/2-0371.html 詳細は上記リンクをご覧いただくとして、掻い摘んで言うと for %%F in (ファイル名) do set fsize=%%~zF という書き方で環境変数fsize にファイルサイズが入ります。 しかし、この方法はNTではサポートされていません。 そこで、2000/NTの両方でうまく動く方法ですが、以下のバッチで 同様にファイルのサイズを取得できます。 使用方法:sizeck ファイル名 --------------------------------------- sizeck.bat echo off for /F "tokens=1-3" %%a in ('dir /-C "%1"^| find "%1"') do set fsize=%%c echo %1 %fsize% 動作原理は、dir ファイル名の結果のファイルサイズを読み込んで 環境変数 fsize に設定するような仕組みです。 |
|
845) Re4:ファイルの中身があるか確認 M 2003/11/11(火) 09:36 |
|
じゃくさんありがとうございます。 >サイズが0のファイルを判定する方法として、 >Windows2000では、for文を使う方法が過去ログにあります。 >http://fpcu.on.coocan.jp/dosvcmd/bbs/log/cat3/if/2-0371.html > >詳細は上記リンクをご覧いただくとして、掻い摘んで言うと > >for %%F in (ファイル名) do set fsize=%%~zF > >という書き方で環境変数fsize にファイルサイズが入ります。 なるほどこうすればいいのですね。 >しかし、この方法はNTではサポートされていません。 残念・・・ >そこで、2000/NTの両方でうまく動く方法ですが、以下のバッチで >同様にファイルのサイズを取得できます。 >使用方法:sizeck ファイル名 > >--------------------------------------- sizeck.bat >echo off >for /F "tokens=1-3" %%a in ('dir /-C "%1"^| find "%1"') do set fsize=%%c >echo %1 %fsize% > >動作原理は、dir ファイル名の結果のファイルサイズを読み込んで >環境変数 fsize に設定するような仕組みです。 おおー早速試してみます。 ありがとうございます。 |