No. | 質問・回答 | おれい |
|
[124161] バッチ処理 %%変数の参照について |
|
|
使用しているOS: Windows 7
その他:
お世話になります。
15年以上もバッチ処理から離れていたので、素人同然です。
御手柔らかにご教授お願いします。
バッチ処理のFORループ文に登場する%%変数を「ループ内で参照したい」と考えています。
[TEST.BAT]
ECHO OFF
FOR /f "DELIMS=" %%A IN ('DIR /B') DO (
SET BBB=%%A
ECHO ----------------------------- ループ内出力
ECHO 直接出力 %%A
ECHO 代入出力 %BBB%
)
ECHO ----------------------------- ループ外出力
ECHO 代入出力 %BBB%
PAUSE
[--EOF--]
ただ、実際にやって見ますと、直接表記するECHO文での出力はできるものの、
IF(条件)文やSET(代入)文で参照する事が出来ません。
ですが、ループ外出力で評価すると、代入自体は(最終行に限って)参照する事が出来るようです。(ループの最終処理なので理解出来ます)
標準出力の全ての行を対象に、代入や条件分岐などの処理をしたいと思っているのですが、どなたか対策を教えて頂けませんか?
標準出力の不特定行数を参照するバッチ処理であればFOR文に固執するつもりは有りませんが、外部ファイルへの一時退避は極力避けたいと考えています。
また、C言語やWindowsScriptなど、バッチ文法以外の別言語を使用する事は出来ません。
宜しくお願いします。
今更ですがナナメ上 (未登録) 2014年5月5日13:22
|
|
|
|
[124165] |
自己レスですが、後日談です。
%%変数を直接参照する事はできませんが、
別変数へ代入した物を遅延展開する事で、ループ内参照が可能となります。
恐らく条件分岐をはじめ、他の構文でも参照は可能でしょう。
問題解決です。
[TEST2.BAT]
ECHO OFF
SETLOCAL EnableDelayEdexpansion
FOR /f "DELIMS=" %%A IN ('DIR /B') DO (
SET BBB=%%A
ECHO ----------------------------- ループ内出力
ECHO 直接出力 %%A
ECHO 遅延展開 !BBB!
)
ENDLOCAL
PAUSE
[--EOF--]
完璧に「忘却の彼方」でした。解決した今でも「アハ体験」にすら成りそうもありません。
時の流れは恐ろしい・・・
今更ですがナナメ上 (未登録) 2014年5月13日10:25
|
|
|
|
( 参照数:1913 日平均:0.5 ) |
|
〜 回答の受付を終了しました 〜 |