|
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 |
|
じゃくさん ご回答どうもありがとうございました。 ばっちり解決いたしました。 |