[前の記事]« ≪リードオンリー化しました≫(#1)
[次の記事]PC DOSでREBOOTするコマンドは »

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

▲カテゴリー「FIND,FINDSTR,SORT…テキストファイル内文字列の操作」索引へ
▲カテゴリー「FOR /F」索引へ

ファイルの1行目の取得


3) ファイルの1行目の取得 オサム 2002/12/11(水) 13:42


バッチファイル(case1.bat)にて、ファイル名がたくさん書かれているファイル(buf.txt)を参照し、1行目(改行まで)の文字列を環境変数(Fname)に取得する処理を行いたいと考えております。

以下に処理概要を記述致します。

「case1.bat」の処理
-----------------------------
①buf.txtより1行目の文字列を取得し、環境変数(Fname)に格納する。
(下記buf.txtから"filename1.txt"という文字列を取得することになります)
-----------------------------

「buf.txt」の中身
-----------------------------
filename1.txt
filename2.txt
filename3.txt
filename4.txt
filename5.txt
-----------------------------

取得するのは、1行目(最初の改行まで)だけで構いません。
「buf.txt」の中身はファイル名の文字列が異なるだけで、いつも同じ形式となります。

おそらくForを使用することになるとは思うのですが…。
おもうように環境変数に文字列が取得出来ません。

どなたか正しい方法をご教授下さい。

ちなみにOSはWindows2000です。
よろしくお願いいたします。


6) Re:ファイルの1行目の取得 じゃく 2002/12/11(水) 19:28


オサムさんこんにちは。

>おそらくForを使用することになるとは思うのですが…。
>おもうように環境変数に文字列が取得出来ません。

>ちなみにOSはWindows2000です。

for文は全部の行が展開されて一括で実行されるので、
環境変数は上書きされるし、環境変数の展開は最初に評価
されたまま変わらないし、やりづらいですね。
解決策として、for文のdo 以降で call文をつかって、
サブルーチンを呼び出すことができます。
call /? を参照してみてください。

サンプルです。
サブルーチンで環境変数 fname のセットを最初だけに
限定しています。Windows XPで動作確認しました。
---------------------------case1.bat
echo off
:fname のダミー設定
set fname=000
for /f %%a in (buf.txt) do call :envset %%a
echo 1行目のファイル名は %fname%
exit /b
:envset
if "%fname%"=="000" set fname=%1
goto :EOF



8) Re2:ファイルの1行目の取得 オサム 2002/12/12(木) 19:45


じゃくさん

ご回答どうもありがとうございました。
ばっちり解決いたしました。
 
 


カテゴリー「FIND,FINDSTR,SORT…テキストファイル内文字列の操作」索引へ
カテゴリー「FOR /F」索引へ

 

カテゴリー一覧

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


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

資料書籍

About

2002年12月11日 14:47に投稿されたエントリーのページです。

ひとつ前の投稿は「≪リードオンリー化しました≫(#1)」です。

次の投稿は「PC DOSでREBOOTするコマンドは」です。

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

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