バッチスクリプトでfor文の制御変数展開

このQ&Aのポイント
  • バッチスクリプトでfor文の制御変数を展開する方法について検討しています。
  • 現在の実装ではコマンドライン引数を展開する際にうまく出力できていません。
  • 効果的な方法を探しており、アドバイスを求めています。
回答を見る
  • ベストアンサー

for文の制御変数の展開(バッチスクリプト)

こんにちは。 コマンドプロンプトのバッチスクリプトにおいて、 例えば、コマンドライン引数を、a b c d e f g h i としてスクリプトを実行したときに、 No1:a No2:b No3:c No4:d No5:e No6:f No7:g No8:h No9:i のように出力させることを考えています。 この場合、バッチスクリプト内で for /L %%a in (1,1,9) do echo No%%a:%%%a のように記述すればいいかなと思ったのですが、出力は以下のようになりました。 No1:1 No2:2 No3:3 No4:4 No5:5 No6:6 No7:7 No8:8 No9:9 また、最後のaにつく%を4つに増やしたところ、出力は以下のようになりました。 No1:%1 No2:%2 No3:%3 No4:%4 No5:%5 No6:%6 No7:%7 No8:%8 No9:%9 となりました。 何か良い方法が思いついた人がいらっしゃれば、アドバイスをお願いしたいと思います。 では、よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.1

for /L %%a in (1,1,9) do call echo No%%a:%%%%a

MetalLover
質問者

お礼

情報提供ありがとうございます。 callを使えばよかったのですね。 callは全然使ったことがないので、この際に勉強しておきます。 どうも、ありがとうございました。

関連するQ&A

  • バッチファイル(for文)がうまく動かない

    以下のようなバッチファイルをWin2008上で実行しようとしています ------------------------------ @echo on set LOGFILE=C:\a.log set CONF=C:\a.txt FOR /F "tokens=1-3 delims=," %%i in (%CONF%) do ( echo %%i %%j %%k > %LOGFILE% 2>&1 ) ------------------------------ C:\a.txtの中身はこのようになっています ------------------------------ a,b,c e,f,g ------------------------------ 期待する結果は「1.」なのですが.batを実行しても「2.」の結果がログに表示されます どのように修正すれば期待の結果が得られますでしょうか ※ちなみに.batの実行ではなくコマンドプロンプトで[%%]を[%]に変更すれば正常に実行できました 1. ------------------------------ a b c e f g ------------------------------ 2. ------------------------------ e f g ------------------------------

  • 縦に並んでいる表をマクロで横に並び替えたい。

    以下のような縦に並んだ表を、 (A列には、日付/NO、B列には文字列が入力されています。)    A      B  ------------- 1 │ 10月1日   2 │NO      3 │1      A 4 │2      B 5 │3      C 6 │10月2日 7 │NO 8 │1      D 9 │2      E 10│3      F 11│4      G 12│5      H 13│10月3日 14│1       I 15│2       J 16│10月4日 17│・      ・ 18│・      ・ 19│・      ・ 20│・      ・ 以下のように横に並び替えたい。    A      B    C     D    E     F     G ----------------------------------------------------------------- 1 │ 10月1日     10月2日      10月3日      10月4日 ・・・・   2 │NO         NO          NO          NO       3 │1      A   1      D    1      I 4 │2      B   2      E    2      J 5 │3      C   3      F 6 │           4      G 7 │           5      H 8 │      9 │ 日付ごとに項目数が異なるので、 どのようにマクロを組めばいいのか分からず困っております。。 ご回答よろしくお願い致します><!

  • ツリー情報のデータをSQLで取得したい

    SQLServer 2008 です。 以下のツリーデータの場合に A ┬C │├D ┬H ││ ├I ││ └J │└E B ┬F ┬I  │ └L  └G 次のようなデータを登録しています。 ┌──┬──┬──┐ │OYA │KO │Data│ ├──┼──┼──┤ │A │C  │"C" │ ├──┼──┼──┤ │A  │D  │"D" │ ├──┼──┼──┤ │A  │E  │"E" │ ├──┼──┼──┤ │B  │F  │"F" │ ├──┼──┼──┤ │B  │G  │"G" │ ├──┼──┼──┤ │D  │H  │"H" │ ├──┼──┼──┤ │D  │I  │"I" │ ├──┼──┼──┤ │D  │J  │"J" │ ├──┼──┼──┤ │F  │I  │"I" │ ├──┼──┼──┤ │F  │L  │"L" │ └──┴──┴──┘ 引数OYA="A"でSQLを実行した場合に 以下のような この引数を含むそれ以下のツリーに関する データを取得する方法を教えてください。 ┌──┬──┬──┐ │OYA │KO │Data│ ├──┼──┼──┤ │A │C  │"C" │ ├──┼──┼──┤ │A  │D  │"D" │ ├──┼──┼──┤ │A  │E  │"E" │ ├──┼──┼──┤ │D  │H  │"H" │ ├──┼──┼──┤ │D  │I  │"I" │ ├──┼──┼──┤ │D  │J  │"J" │ └──┴──┴──┘

  • Excel:縦横入れ替えの応用

    Excelでの質問です。 WinXPでExcel2003を使用しています。 データは以下のように並んでいます。    A B 1) Aさん 2) Bさん 3) Cさん 4) 5) Dさん 6) Eさん 7) 8) Fさん 9) Gさん 10) Hさん 11) Iさん このデータを↓のように並び替えたいのですが・・・    A B C D 1) Aさん Bさん Cさん 2) 3) 4) 5) Dさん Eさん 6) 7) 8) Fさん Gさん Hさん Iさん 9) どうにもこうにもうまくいかないので教えてください。 既出だったらすみません。 よろしくお願いします。

  • 線形代数の問題?

    線形代数の問題だと思うのですが、9個の未知数がa b c d e f g h i  があって、  a+b+c=2 d+e+f=2 g+h+i=2 a+d+g=2 b+e+h=2 c+f+i=2 を満たしているとします。  行列で書くと、 「1 1 1 0 0 0 0 0 0 | |0 0 0 1 1 1 0 0 0| |0 0 0 0 0 0 1 1 1| |1 0 0 1 0 0 1 0 0|=A |0 1 0 0 1 0 0 1 0| |0 0 1 0 0 1 0 0 1 」 x=(a b c d e f g h i) c=(2 2 2 2 2 2 2 2 2) として、A(xの転置)=(cの転置) と書けます。 a~iは0か1として、解が何個あるのか調べたいのですがどのように考えたらよいのでしょうか。

  • excel 関数作成の簡素化 ?

    A B C D E F G H I J 1784 1784 1781 1782 1809 1813 1821 1813 1784 1784 (1)A-B B-C C-D D-E E-F F-G G-H H-I I-J (1)0 3 -1 -27 -4 -8 8 29 0 (2)=SUMIF(A:I,">0",A:I) で 40になる 上記の(1)を使用せず (2)のように一気に出来ないか? もしも 表示が悪ければ 書き直し する為 回答不要

  • 配列の要素を任意の数で割って、割り振る方法

    $abc = array("A", "B", "C", "D", "E", "F", "G", "H", "I"); 上記のような配列があったとします。 これを任意の数で割って、割り振っていきたいのですが、例えば7で割ったとしたら、 1. A, B 2. C, D 3. E 4. F 5. G 6. H 7. I という風に、割り振りたいのですが、どのようにすれば、こういったことがPHPのプログラムで実現できるか教えてください。 もしくは、 1. A, H 2. B, I 3. C 4. D 5. E 6. F 7. G という割り振り方でも大丈夫です。

    • ベストアンサー
    • PHP
  • 次のように表される対称行列の名前は?

    以下のように表される対称行列に固有の名前はありますでしょうか? 2次の場合 | a b | | b a | 4次の場合 | a b c d | | b a d c | | c d a b | | d c b a | 8次の場合 | a b c d e f g h | | b a d c f e h g | | c d a b g h e f | | d c b a h g f e | | e f g h a b c d | | f e h g b a d c | | g h e f c d a b | | h g f e d c b a | Bisymmetric matrixの一種だと思うのですが,4次および8次の場合には 2次の区分行列に分割した場合,各区分行列においても対称性が現れています. もしご存知の方がいらっしゃいましたらご教授頂けると助かります.

  • C言語

    main() { int a = 5,b=2,e,f,g=3,i; double c,d,h=2.0; c = a/b; printf("c = %f\n",c); d = a/h; printf("d=%f\n",d); e = a++; f = ++b; g+= 4; i= ++a + b; printf(" a = %d\n",a); printf(" b = %d\n"b); printf(" e = %d\n"e); printf(" f = %d\n"f); printf(" g = %d\n"g); printf(" i = %d\n" i); 答え a=7,b=3,c=2.0,d=2.5,e=5,f=3,g=7,i=10 この問題のa,b,iがどうやってこの値になるのかがわかりません解説お願いします。

  • MATLABのfor文の使い方について

    MATLAB(というかプログラム)初心者です 下記を教えてください よろしくお願いいたします 「つくりたいプログラム」 y1=[A B C] y2=[D E F] ・ ・ ・ y200=[AA BB CC] 上記のような200個くらいある行列に同じ操作をしたいです そこでいちばん簡単な構造を考えました ////////////////////// y1=[A B C] y2=[D E F] for i=1:2 Yi=yi*5 end ///////////// 成功イメージは Y1=[5A 5B 5C] Y2=[5D 5E 5F] となってほしいのですが回りません・・・ yiの定義のしかたがわからず困っております 初歩的な質問かもしれませんが教えてくださいよろしくお願いいたします