|
436) for文内のif文について すず 2003/07/16(水) 17:21 |
|
教えてほしいです。 次のようなことをやりたいのですが、 なぜだかできません。 ・ファイルAにある数値と、指定した数値を比較して、 指定した数値より大きい数値を含む一行のみを取得して、別ファイルを作成 ex) ファイルA(a.txt) ABC_102 EFG_99 HIJKL_12 MNOP_49 Q_32 私が作成したバッチファイル @echo off for /f "tokens=1-2 delims=_ " %%i in (a.txt) do if %%i GEQ 50 echo %%i_%%j しかし、これでは、できませんでした。 御願いします。 OS : WinNT4.0 |
|
437) Re:for文内のif文について じゃく 2003/07/16(水) 17:47 |
|
>教えてほしいです。 > >次のようなことをやりたいのですが、 >なぜだかできません。 > >・ファイルAにある数値と、指定した数値を比較して、 > 指定した数値より大きい数値を含む一行のみを取得して、別ファイルを作成 > > ex) > ファイルA(a.txt) > ABC_102 > EFG_99 > HIJKL_12 > MNOP_49 > Q_32 > > 私が作成したバッチファイル > @echo off > for /f "tokens=1-2 delims=_ " %%i in (a.txt) do if %%i GEQ 50 echo %%i_%%j > > しかし、これでは、できませんでした。 どうなったか書かれていませんが、比較するのは数値なので、 > for /f "tokens=1-2 delims=_ " %%i in (a.txt) do if %%i GEQ 50 echo %%i_%%j の行の if %%i GEQ 50 は if %%j GEQ 50 ではないですか? |
|
442) Re2:for文内のif文について ふぇむ 2003/07/16(水) 20:04 |
|
> if %%j GEQ 50 >ではないですか? すみません、じゃく さんの方でもうコメント済みの内容だったんですね。ろくに前の方読まずにコメントしてしまいました。 重複してしまってごめんなさい。 |
|
444) Re3:for文内のif文について じゃく 2003/07/17(木) 07:45 |
|
>すみません、じゃく さんの方でもうコメント済みの内容だったんですね。ろくに前の方読まずにコメントしてしまいました。 >重複してしまってごめんなさい。 いえいえ。ふぇむさんもほぼ同じ時間で回答してますね(^^) それよりすずさんが、解決されたのか気になりますね。 |
|
445) Re4:for文内のif文について すず 2003/07/17(木) 09:54 |
|
>それよりすずさんが、解決されたのか気になりますね。 すみません、昨日返信したつもりが、何も記述していませんでした・・・。 お二人が御指摘された通り%%i は %%j の間違えです。。。 私が、記述したfor文ですと、何も動作せず終了されます。 よろしくお願いします。 |
|
450) Re5:for文内のif文について ふぇむ 2003/07/19(土) 02:29 |
|
>私が、記述したfor文ですと、何も動作せず終了されます。 Win2000では動きそうなので、NT4.0 ではできない何かが含まれているのではないでしょうか? 手元に NT4.0 の環境を持たないので、NT4.0の for 文にどこまで表現力があったか検証できないのですが、まずとりあえずその環境で for /? でヘルプを見てみて、使えない表現が混じってないか見てはどうでしょう。 そこに問題がないなら、@echo off をとってしまって、実行時にどのように解釈されているかを目視してみてはどうでしょうか。案外実際のスクリプト上につまらないミスがあるのかもしれません。 gawk.exe が使えれば、OSにあまり依存せず、この場合だと gawk -F _ "$2 >= 50" a.txt だけで済むのですが.... (フィールドセパレータを _ にして、a.txt の各行にて、2つめのフィールドが50以上の行を表示、という意味) |
|
451) Re6:for文内のif文について ふぇむ 2003/07/19(土) 11:46 |
|
>>私が、記述したfor文ですと、何も動作せず終了されます。 if 文か不成立だったときに for 文全体を終わってしまうのかも? もしそうだとすると、たとえば、for 文の do 以降の実行部を別のサブルーチン(:label 行で始まり goto :eof でおわるブロック)にして、つまり以下のような形にするとうまくいくかも? for /f "tokens=1-2 delims=_" %%i in ( a.txt ) do ( call :check %%i %%j ) goto :end :check if %2 GEQ 50 echo %1_%2 goto :eof :end |
|
439) Re:for文内のif文について ふぇむ 2003/07/16(水) 17:51 |
|
> for /f "tokens=1-2 delims=_ " %%i in (a.txt) do if %%i GEQ
50 echo %%i_%%j この if %%i は if %%j の間違いだと思いますが、そういうことではなくて? どういう現象が出ました? |
|
- ◆436. for文内のif文について (すず) 2003/07/16(水) 17:21
- 437. Re:for文内のif文について (じゃく) 2003/07/16(水) 17:47
- 442. Re2:for文内のif文について (ふぇむ) 2003/07/16(水) 20:04
- 444. Re3:for文内のif文について (じゃく) 2003/07/17(木) 07:45
- 445. Re4:for文内のif文について (すず) 2003/07/17(木) 09:54
- 450. Re5:for文内のif文について (ふぇむ) 2003/07/19(土) 02:29
- 451. Re6:for文内のif文について (ふぇむ) 2003/07/19(土) 11:46
- 450. Re5:for文内のif文について (ふぇむ) 2003/07/19(土) 02:29
- 445. Re4:for文内のif文について (すず) 2003/07/17(木) 09:54
- 444. Re3:for文内のif文について (じゃく) 2003/07/17(木) 07:45
- 442. Re2:for文内のif文について (ふぇむ) 2003/07/16(水) 20:04
- 439. Re:for文内のif文について (ふぇむ) 2003/07/16(水) 17:51
- 440. Re2:for文内のif文について (すず) 2003/07/16(水) 18:22
- 437. Re:for文内のif文について (じゃく) 2003/07/16(水) 17:47