[前の記事]« バッチファイルでtxtの編集は可能?
[次の記事]【新掲示板へ引越しのお知らせ】(1→2) »

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

▲カテゴリー「DIR…ディレクトリ(フォルダー)/ファイルの一覧」索引へ

ディレクトリ内のファイル数を環境変数にセットするには


971) ディレクトリ内のファイルの個数を取得 ちるちるみちる 2002/12/05(木) 15:48


またまたお世話になります。

ディレクトリ内にあるファイルの個数を取得し、
環境変数にセットするコマンドを教えて頂きたいのです。
そのディレクトリには、今のところサブフォルダは存在しませんが、
後々サブフォルダを作成するかもしれません。
ですので、サブフォルダを除いたファイルの個数だけを
取得できるようなコマンドがあれば、と思っています。

よろしくおねがいします。

環境はWinNT4.0です。

974) Re:ディレクトリ内のファイルの個数を取得 じゃく 2002/12/05(木) 17:49


こんにちは。

>ディレクトリ内にあるファイルの個数を取得し、
>環境変数にセットするコマンドを教えて頂きたいのです。
>そのディレクトリには、今のところサブフォルダは存在しませんが、
>後々サブフォルダを作成するかもしれません。
>ですので、サブフォルダを除いたファイルの個数だけを
>取得できるようなコマンドがあれば、と思っています。

>環境はWinNT4.0です。
NT環境がないので、あくまでXPで動作確認したものです。
環境変数 files にファイルの個数が入ります。

echo off
for /F %%a in ('dir /a:-d ^| find "個のファイル"') do set files=%%a
echo ファイルは %files% 個


978) Re2:ディレクトリ内のファイルの個数を取得 ちるちるみちる 2002/12/06(金) 09:32


こんにちは。
じゃくさん いつも回答ありがとうございます。

教えて頂いたコマンドを打ってみたのですが、
NTで実行するとfilesの中身が"FIND:"となってしまいます。
もちろんパスも指定したのですが・・・。

パスの指定の仕方が悪かったのでしょうか?
それともNTでは使えないってことでしょうか?

実行したコマンドは以下のとおりです。(確認の為、バッチではなくDOSプロンプト上で実行しました。)
for /F %a in ('dir C:\WINNT\ /a:-d ^| find "個のファイル"') do set files=%a

初心者ですいませんが、よろしくおねがいします。

>こんにちは。

>>ディレクトリ内にあるファイルの個数を取得し、
>>環境変数にセットするコマンドを教えて頂きたいのです。
>>そのディレクトリには、今のところサブフォルダは存在しませんが、
>>後々サブフォルダを作成するかもしれません。
>>ですので、サブフォルダを除いたファイルの個数だけを
>>取得できるようなコマンドがあれば、と思っています。

>>環境はWinNT4.0です。
>NT環境がないので、あくまでXPで動作確認したものです。
>環境変数 files にファイルの個数が入ります。

>echo off
>for /F %%a in ('dir /a:-d ^| find "個のファイル"') do set files=%%a
>echo ファイルは %files% 個


979) Re3:ディレクトリ内のファイルの個数を取得 じゃく 2002/12/06(金) 09:52


こんにちは。
現象をクリアにするために次のバッチでお試しください。
※うまく動作しないときは、tmp.txtの内容を教えてください。

echo off
dir /a:-d C:\WINNT | find "個のファイル" >tmp.txt
for /F %%a in (tmp.txt) do set files=%%a
echo ファイルは %files% 個


981) Re4:ディレクトリ内のファイルの個数を取得 ちるちるみちる 2002/12/06(金) 10:49


じゃくさん、早々の回答ありがとうございます。

実行結果です。
101 個のファイル 11,189,582 バイト

・・・出ましたね^^;
やっぱり私の打ったコマンドがおかしかったんでしょうか?
でも何が原因なのか良くわかりません。
すいません。よろしくご教授お願いします。

>こんにちは。
>現象をクリアにするために次のバッチでお試しください。
>※うまく動作しないときは、tmp.txtの内容を教えてください。

>echo off
>dir /a:-d C:\WINNT | find "個のファイル" >tmp.txt
>for /F %%a in (tmp.txt) do set files=%%a
>echo ファイルは %files% 個


982) Re5:ディレクトリ内のファイルの個数を取得 じゃく 2002/12/06(金) 10:59


>実行結果です。
> 101 個のファイル 11,189,582 バイト

>・・・出ましたね^^;
うまく環境変数には取り込めたのですか?
取り込めなかったのかな?よく分からないのですが。
環境変数 files には値がセットされてますか?

>やっぱり私の打ったコマンドがおかしかったんでしょうか?
>でも何が原因なのか良くわかりません。
>すいません。よろしくご教授お願いします。

ちるちるみちるさんが実験したコマンドラインを次のようにすると
どのような結果になりますか?
for /F %a in ('dir C:\WINNT\ /a:-d ^| find "個のファイル"') do echo %a %b %c %d %e

ひょっとするとパイプ "|" のエスケープ文字"^"がNT4では
使えないのかな。


983) Re6:ディレクトリ内のファイルの個数を取得 ちるちるみちる 2002/12/06(金) 11:24


こんにちは。

>うまく環境変数には取り込めたのですか?
>取り込めなかったのかな?よく分からないのですが。
>環境変数 files には値がセットされてますか?

環境変数 files には、ちゃんと"101"がセットされていました。

>ちるちるみちるさんが実験したコマンドラインを次のようにすると
>どのような結果になりますか?
>for /F %a in ('dir C:\WINNT\ /a:-d ^| find "個のファイル"') do echo %a %b %c %d %e

上記コマンドを実行すると以下の結果になりました。

C:\>echo FIND: %b %c %d %e
FIND: %b %c %d %e

C:\>

>ひょっとするとパイプ "|" のエスケープ文字"^"がNT4では
>使えないのかな。

う~ん よく分からないです^^;
すいません。


985) Re7:ディレクトリ内のファイルの個数を取得 じゃく 2002/12/06(金) 15:57


>環境変数 files には、ちゃんと"101"がセットされていました。
よかったです。

>>ちるちるみちるさんが実験したコマンドラインを次のようにすると
>>どのような結果になりますか?
>>for /F %a in ('dir C:\WINNT\ /a:-d ^| find "個のファイル"') do echo %a %b %c %d %e %f

一部抜けてました。これでもう一度お願いします。
for /F "tokens=1-6" %a in ('dir C:\WINNT\ /a:-d ^| find "個のファイル"') do echo %a %b %c %d %e %f


986) Re8:ディレクトリ内のファイルの個数を取得 ちるちるみちる 2002/12/06(金) 16:57


>一部抜けてました。これでもう一度お願いします。
>for /F "tokens=1-6" %a in ('dir C:\WINNT\ /a:-d ^| find "個のファイル"') do echo %a %b %c %d %e %f


実行結果は
C:\>echo FIND: パラメータの書式が違います
FIND: パラメータの書式が違います
となります。

しかし先程の、ファイルに一旦退避してから読込む という方法で
なんとか実現できました。
ファイルを一旦作成するというのは不本意でしたが、
まぁ最後に削除すれば良いだけの話でしたので。。。

こんな初心者の質問に丁寧に答えてくださって、
じゃくさん 本当にありがとうございました。

もっと簡単に実現できるというのでしたら実際ありがたいですが^^;
以後も続けてご教授頂けると幸いです。


988) Re9:ディレクトリ内のファイルの個数を取得 じゃく 2002/12/06(金) 17:27


>こんな初心者の質問に丁寧に答えてくださって、
>じゃくさん 本当にありがとうございました。

いえいえ。喜んでいただければ(^^)/

>もっと簡単に実現できるというのでしたら実際ありがたいですが^^;
>以後も続けてご教授頂けると幸いです。

もう少しいい例が見つかりましたので記述します。
なおこれでうまくいったら、新掲示板へ移動しましょう。

echo off
set files=0
for %%a in ( c:\winnt\*.* ) do set /a files=files+1
echo ファイルの数は %files%

2) Re10:ディレクトリ内のファイルの個数を取得 ちるちるみちる 2002/12/10(火) 12:30


お返事遅くなってしまいすいませんでした。
そのせいで以前の掲示板に書き込み出来なくなってるし・・・^^;

>もう少しいい例が見つかりましたので記述します。
>なおこれでうまくいったら、新掲示板へ移動しましょう。

>echo off
>set files=0
>for %%a in ( c:\winnt\*.* ) do set /a files=files+1
>echo ファイルの数は %files%

上記のコマンドで環境変数にファイルの個数が取れました。
しかし実際のファイル数より1少ない値が入るようでしたので、
最初に1を加算してから上のコマンドを実行するようにして対応しました。

お蔭様で色々と勉強になりました。
どうもありがとうございました。

4) Re:Re10:ディレクトリ内のファイルの個数を取得 じゃく 2002/12/11(水) 19:13


ちるちるみちるさん、こんにちは。

>上記のコマンドで環境変数にファイルの個数が取れました。
>しかし実際のファイル数より1少ない値が入るようでしたので、
>最初に1を加算してから上のコマンドを実行するようにして対応しました。

こちらでも実験しましたが、DIR *.* のときと for 文で隠しファイルを扱うかどうかが微妙に違うようです。
通常のフォルダ(ディレクトリ)では一致すると思います。
ではまた。
 
 


カテゴリー「DIR…ディレクトリ(フォルダー)/ファイルの一覧」索引へ

 

カテゴリー一覧

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


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

資料書籍

About

2002年12月05日 21:34に投稿されたエントリーのページです。

ひとつ前の投稿は「バッチファイルでtxtの編集は可能?」です。

次の投稿は「【新掲示板へ引越しのお知らせ】(1→2)」です。

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

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