[前の記事]« 「指定した名前のファイルがあれば表示」したい
[次の記事]PDFファイル印刷のバッチ処理化は可能? »

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

▲カテゴリー「文字列の操作」索引へ

ファイルを一行だけ読み込むには

504.
ファイルを一行だけ読み込むには
2004年06月09日(水) 21時33分
よいこ
ファイルの読み込みについてなのですが、
ファイルの最初の一行のみ読み込むことは可能でしょうか?
あるとすれば、FOR文で可能なのでしょうか?
また最初の行でなく任意の行を読み込むことはできるのでしょうか?

以上についてよろしくお願いいたします。
512.
Re:ファイルを一行だけ読み込むには
2004年06月10日(木) 18時23分
じゃく
>ファイルの読み込みについてなのですが、
>ファイルの最初の一行のみ読み込むことは可能でしょうか?
>あるとすれば、FOR文で可能なのでしょうか?
>また最初の行でなく任意の行を読み込むことはできるのでしょうか?

for文で読込み、1行目を読み込んだところで goto 文で抜けてしまうという方法はいかがでしょう。
任意のn行目だけ1行を読み込むことも for 文 の skip を併用すれば可能です。
以下は例です。(WindowsXPで動作確認)

-------------------------------------- oneline.bat
echo off
if "%1"=="" goto err
if not exist %1 goto err
set skip=
set /a line=%2-1
if %line% GTR 0 set skip=skip=%line%
for /f "%skip% delims=" %%A in ( %1 ) do (
    set data=%%A
    goto break
)
:break
echo %data%
exit /b

:err
echo ファイルのn行目を表示する
echo:
echo %0 ファイル名 [表示する行番号]
echo:
echo 表示する行番号はファイルの先頭からの行番号を指定してください。
echo 未指定の場合は先頭の1行目を表示します。
513.
Re2:ファイルを一行だけ読み込むには
2004年06月10日(木) 20時05分
よいこ
>for文で読込み、1行目を読み込んだところで goto 文で抜けてしまうという方法はいかがでしょう。
>任意のn行目だけ1行を読み込むことも for 文 の skip を併用すれば可能です。

ご回答ありがとうございます。
もう一点お聞きしたいのですが、
たとえば読み込むファイルが複数あった場合で
それぞれのファイルの一行目だけを読み込みたいのですが、
何か良い案はありますでしょうか?
516.
Re3:ファイルを一行だけ読み込むには
2004年06月10日(木) 20時52分
oo
>もう一点お聞きしたいのですが、
>たとえば読み込むファイルが複数あった場合で
>それぞれのファイルの一行目だけを読み込みたいのですが、
>何か良い案はありますでしょうか?

1行目だけを読むなら、set /p を使うのが楽です。n (n>1) 行目を読むなら、じゃく さんの回答のようにする必要がありますが。

setlocal enabledelayedexpansion
for %%F in (file1.txt fileA.tzt file99.txt) do (
 set /p A=<"%%~F"
 echo the first line of %%F is !A!
)
517.
Re3:ファイルを一行だけ読み込むには
2004年06月10日(木) 21時09分
じゃく
>ご回答ありがとうございます。
>もう一点お聞きしたいのですが、
>たとえば読み込むファイルが複数あった場合で
>それぞれのファイルの一行目だけを読み込みたいのですが、
>何か良い案はありますでしょうか?

ご質問の具体例を挙げていただきませんか?
抽象的でわからないことがあります。

Q.複数のファイルというのはどのようなもの?
 例えば *.csv だったり、a.txt b.txt c.txt の3つとか

Q.複数のファイルというのは実行時に変わるもの?
 いつも同じものですか?

Q.読み込むってどうしたいの?
 環境変数に入れるのですか?表示するのですか?
 ファイルに出力するのですか?

Q.読み込んだ後どうしたいの?
 処理を続けたいのだと思うのですが、参考のため知りたいです。

差し支えない範囲でいいのですが、このあたりが見えないので。
ところで、OSは2000/XPでいいのですよね。
519.
Re4:ファイルを一行だけ読み込むには
2004年06月10日(木) 21時49分
よいこ
>Q.複数のファイルというのはどのようなもの?
> 例えば *.csv だったり、a.txt b.txt c.txt の3つとか
 
 全てCSVファイルです。行単位の区切り文字の数は全てのファイル
 同じです。


>Q.複数のファイルというのは実行時に変わるもの?
> いつも同じものですか?
  
  実行時に変わります。具体的に説明しますと、実行時に
  パラメータで指定されたディレクトリ内に存在するファイル
  全てを対象とします。
  パラメータで指定されたディレクトリによってファイル名、
  ファイル数が変わります。


>Q.読み込むってどうしたいの?
> 環境変数に入れるのですか?表示するのですか?
> ファイルに出力するのですか?
>Q.読み込んだ後どうしたいの?
> 処理を続けたいのだと思うのですが、参考のため知りたいです。
  
  読み込んだ1行目のデータの例えば3項目目をそのファイルの
  ファイル名にリネームすることを考えています。
    またリネーム後リネームしたファイル名を一覧表として
  出力します。


例)
◎aaaa.CSV
   1111,2222,3333,4444
   5555,6666,7777,8888
   9999,8888,1111,4444
   
◎bbbb.CSV
   4444,7777,2222,8888
   1111,3333,8888,2222

上記のようなCSVファイルがあった場合
aaaa.csvは1行目の3項目目、3333でそのファイル自体を
リネームし3333.csvとする。
同じくbbbb.CSVは2222.csvとする。

◎一覧表
3333.csv 
2222.csv


>差し支えない範囲でいいのですが、このあたりが見えないので。
>ところで、OSは2000/XPでいいのですよね。

  2000を使用しています。

よろしくお願いいたします。
520.
Re5:ファイルを一行だけ読み込むには
2004年06月11日(金) 01時43分
じゃく
こんばんは。

>>Q.複数のファイルというのはどのようなもの?
>> 例えば *.csv だったり、a.txt b.txt c.txt の3つとか
> 
> 全てCSVファイルです。行単位の区切り文字の数は全てのファイル
> 同じです。

>>
>>Q.複数のファイルというのは実行時に変わるもの?
>> いつも同じものですか?
>  
>  実行時に変わります。具体的に説明しますと、実行時に
>  パラメータで指定されたディレクトリ内に存在するファイル
>  全てを対象とします。
>  パラメータで指定されたディレクトリによってファイル名、
>  ファイル数が変わります。
>>
>>Q.読み込むってどうしたいの?
>> 環境変数に入れるのですか?表示するのですか?
>> ファイルに出力するのですか?
>>Q.読み込んだ後どうしたいの?
>> 処理を続けたいのだと思うのですが、参考のため知りたいです。
>  
>  読み込んだ1行目のデータの例えば3項目目をそのファイルの
>  ファイル名にリネームすることを考えています。
>    またリネーム後リネームしたファイル名を一覧表として
>  出力します。


>例)
>◎aaaa.CSV
>   1111,2222,3333,4444
>   5555,6666,7777,8888
>   9999,8888,1111,4444
>   
>◎bbbb.CSV
>   4444,7777,2222,8888
>   1111,3333,8888,2222

>上記のようなCSVファイルがあった場合
>aaaa.csvは1行目の3項目目、3333でそのファイル自体を
>リネームし3333.csvとする。
>同じくbbbb.CSVは2222.csvとする。

ひょっとしてこの、リネームに使う1行目の3項目目を取り出すときに
No.494で質問された「CSVファイルの空文字について」につながる
訳ですか?
それなら、ooさんがNo.498で回答されている内容を修正した方が
早いと思います。
その点どうでしょうか?
 
 


カテゴリー「文字列の操作」索引へ

 

カテゴリー一覧

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


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

資料書籍

About

2004年06月09日 23:58に投稿されたエントリーのページです。

ひとつ前の投稿は「「指定した名前のファイルがあれば表示」したい」です。

次の投稿は「PDFファイル印刷のバッチ処理化は可能?」です。

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

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