2011-02-08 9 views
0

私はスクリプトを持って、それは私が時代の同じパスXの量を追加しました(原因PATHが長いの方法ですので、私はここでエラーを取得し、数回の私のバットスクリプトを実行した後、パスdosでセッション変数を作成していますか?

path=%PATH%;C:\dev\external\stuff\bin 

へのパスを追加します)。

だから私はmyvar="dontdoitagain"を試して、if文を書いた。しかし、それは常に空ですが、バットファイルが終了するとクリアされているように見えます(プロンプトを再開するときに反対します。

どのようにして、セッションスコープではなく、セッションスコープでその変数を使用するのですか?

答えて

1
if not defined EXTENDED_PATH (
    set PATH=%PATH%;my_additions 
    set EXTENDED_PATH=1 
) 

が実際に動作するはずです。変数の有効期間を制限するsetlocalを使用しない限り、すべての変数は、バッチが終了した後も残ります。

注:実際にDOSを使用している場合、約15年前にWindows NT 4でcmdに導入された機能に依存しているため、これは機能しません。その場合は、次のような手段をとる必要があります。

if %EXTENDED_PATH%==1 goto skip 
set PATH=%PATH%;my_additions 
set EXTENDED_PATH=1 
:skip 
+0

なぜこのコードは機能しません。私は書かなかったスクリプトの部分でエラーが発生します。私はEXTENDED_PATHを一意の変数に変更するので、干渉はありません。スクリプトは私の質問の行と正しく動作します。何らかの理由でこの構文が似ていません –

+0

これでテストしたところ、失敗しました。パスの周りに '(' ')'がなければ、それは成功します。しかし、googling suggest()はマルチブロックif文を使用する方法です。だから私は非常に混乱しています。 PATH =%PATH%; C:\ dev \ external \ bin ) –

+0

@acid:Hm、1分待ってください。あなたは本当にDOSでですか? – Joey

関連する問題