たっぴ(パソコン質問掲示板)

ログイン

メニュー
■ トップ
■ 質問する
■ 回答を見る・回答する
■ 参加者のひろば / テーマ別
■ コミュニケーション道場
■ 「たっぴ」の使い方
■ 「たっぴ」のルール・心得

エキスパート トータルランキング
Rank ニックネーム E-Point
1 位 sriver 1372 p
2 位 げんき(^^)/ 810 p
3 位 うにゅ 607 p
4 位 mory 512 p
5 位 saru 510 p
6 位 Clark 481 p
7 位 taknt 474 p
8 位 459 p
9 位 あき◆ 387 p
10 位 aice 367 p
※月間ランキング参加者がありませんでした。



E-Point還元プログラム
E-Point 月間獲得ポイントより回答者様へ現金を還元いたします。

対象還元金額
全員に(E-Point)×20円
支払いは5,000円以上からとなります。
還元金の支払いはご指定銀行口座への振込みとなります。

『マナーの良い質問者』マーク
以下の条件を満たす質問者様には
  『マナーの良い質問者』マーク

が付きます。
  1. 登録していて
  2. 「終了」していない質問がひとつ以下で
  3. 終了した質問で「○○○○○」という言葉の投稿がある
3番目の条件はひらがなです。もうお判りですね。(漢字、カタカナもOKかも。。。)
ぜひマークをGetしてください。









《戻る

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


( 参照数:1326   日平均:0.5 )
 
〜 回答の受付を終了しました 〜


回答、お礼・報告などメッセージの追加

ニックネーム:

まったく新しい内容の質問、質問者以外の方の質問は、メニューの「質問する」から新たに質問してください。

詳細: 内容を詳しく言うと。。。

※「たっぴ」に登録すると質問にポイントが付けられます。 その他便利な機能も使えます!》新規登録 》Help

※http://.....は自動的にハイパーリンクに変換します。
※<pre></pre>が使用できます。     ※引用は行の先頭に「>」を付けてください。自動的に色が付きます。




利用規約 特定商取引に関する法律に基づく表記 プライバシーポリシー 問合せ