[前の記事]« バッチファイル実行がrshコマンドのところで停止してキー入力待ちになる[未解決]
[次の記事][NT系]複数のディレクトリを一度に移動させたい »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「FOR /F」索引へ
▲カテゴリー「IF(結果の検査、条件分岐)」索引へ

[2000,NT]ファイルの中身があるか(サイズが0でないか)を確認するには

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 に設定するような仕組みです。

おおー早速試してみます。
ありがとうございます。
 
 


カテゴリー「FOR /F」索引へ
カテゴリー「IF(結果の検査、条件分岐)」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2003年11月10日 15:51に投稿されたエントリーのページです。

ひとつ前の投稿は「バッチファイル実行がrshコマンドのところで停止してキー入力待ちになる[未解決]」です。

次の投稿は「[NT系]複数のディレクトリを一度に移動させたい」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート