アカウント名:
パスワード:
ラベルで実現しようとしている部分を、「別のバッチファイル」に書いて値を渡せば良いんでありますよ。
あと、変数の動作を変更するための命令文があったけれどもなんだったっけか……
Windowsのコマンドスクリプトは、行単位で環境変数を展開してからコマンドを実行します。なので、
(echo %AAA%) & (set AAA=3) & (echo %AAA%)
という1行のコマンドがあった場合、この行の実行に入る前に二つ目の%AAA%も展開されてしまい、(事前にAAAに何も代入されていない場合)
ECHO は <ON> です。ECHO は <ON> です。
と出力されます。
“(”、“)”を使ってコマンドを囲むと、複数行に渡ってコマンドを書けますが、実行時には“(”、“)”で囲んだ全体を1行として解釈するので、上記と同じ問題が起こります。
( echo %AAA% set AAA=3 echo %AAA%)
一般的な変数と同じような感覚で使える変数として遅延環境変数というのがあって、
setlocal enablede
出遅れて、「余計なもの」(←古い)になっちゃいました……。orz
これだけではなんなんで、逆に、私が回避できていない問題を一つ。
貧弱だとはいえ、Windows環境であればどこにでも必ず入っているということで、ツールを作る時には、コマンドプロンプトだけでかなりがんばってものを作ったりするんですが、
for /l %I in (1,1,5) do (echo %I)
このコマンドを実行すると、(少なくともWindows XPでは)
D:\usr\saeki-k\My Documents\work\work>(echo 1 )1 D:\usr\saeki-k\My Documents\work\work>(echo 2 )2 D:\usr\saeki-k\My Documents\work\work>(echo 3 )3 D:\usr\saeki-k\My Documents\work\
なんとなく分かりました。setlocal ENABLEDELAYEDEXPANSIONは、どうも.cmdファイルの中でしか利かないようですね。「&」などで一行に複数命令書いた時でも、直接入力だとうまく動かないようです。
実用上は問題ありませんが、また変な動きというか…。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人
そういうときは (スコア:1)
ラベルで実現しようとしている部分を、「別のバッチファイル」に書いて値を渡せば良いんでありますよ。
あと、変数の動作を変更するための命令文があったけれどもなんだったっけか……
Re: (スコア:1)
Windowsのコマンドスクリプトは、行単位で環境変数を展開してからコマンドを実行します。なので、
という1行のコマンドがあった場合、この行の実行に入る前に二つ目の%AAA%も展開されてしまい、(事前にAAAに何も代入されていない場合)
と出力されます。
“(”、“)”を使ってコマンドを囲むと、複数行に渡ってコマンドを書けますが、実行時には“(”、“)”で囲んだ全体を1行として解釈するので、上記と同じ問題が起こります。
一般的な変数と同じような感覚で使える変数として遅延環境変数というのがあって、
Re: (スコア:1)
出遅れて、「余計なもの」(←古い)になっちゃいました……。orz
これだけではなんなんで、逆に、私が回避できていない問題を一つ。
貧弱だとはいえ、Windows環境であればどこにでも必ず入っているということで、ツールを作る時には、コマンドプロンプトだけでかなりがんばってものを作ったりするんですが、
このコマンドを実行すると、(少なくともWindows XPでは)
Re:そういうときは (スコア:1)
なんとなく分かりました。
setlocal ENABLEDELAYEDEXPANSIONは、どうも.cmdファイルの中でしか利かないようですね。
「&」などで一行に複数命令書いた時でも、直接入力だとうまく動かないようです。
実用上は問題ありませんが、また変な動きというか…。