2016-11-03 5 views
-1

コマンドプロンプトで作成された環境変数を参照する永続的な環境変数を作成します。これは私が何をしようとしている示しています定義済みの環境変数は、動的に作成された環境変数を参照できますか?

Microsoft Windows [Version 6.1.7601] 
Copyright (c) 2009 Microsoft Corporation. All rights reserved. 

C:\Users\testuser>echo %HTTP_PROXY% 
http://%user%:[email protected]%proxyip%:8080 

C:\Users\testuser>set user=testuser 

C:\Users\testuser>set password=testpass 

C:\Users\testuser>set proxyip=10.20.10.100 

C:\Users\testuser>echo %HTTP_PROXY% 
http://%user%:[email protected]%proxyip%:8080 

私は

http://testuser:[email protected]:8080 

を印刷するには、最終的なエコー文を期待していたこれを可能にする方法はありますか?

+0

この投稿は愚かなものに見えるかもしれません。しかし、このポストの理由は、私はWindows環境変数を通してパスワードを公開したくないということです。私は長いurl変数を使用する予定のコマンドプロンプトでそれを定義したいので、長い変数を覚えたくありません。 。 – Chinmay

+0

WindowsコマンドプロンプトはDOSではありません。 –

+0

環境変数は単なる文字列です。それらは動的に評価されません。 –

答えて

1

いいえ、それはできません。環境変数は再帰的に展開されません。

あなたができることは、HTTP_PROXYを設定するバッチスクリプトを作成することです。 setを使用してユーザー名、パスワード、およびIPアドレスを保存するよう促すメッセージも表示されます。

(あなたではなく、ハードコードされた文字列を使用するよりも、何らかの理由で環境からテンプレート文字列を取得するために、バッチスクリプトが必要な場合は、this answerがそうする方法を説明します。)


脚注:

固定環境変数を参照してください。いくつかの制限があります。 hereおよびhereを参照してください。

ただし、これはプロセスが実行されている間ではなく、新しいプロセス用に環境ブロックが構築されている場合にのみ発生します。 (新しいプロセスが親からその環境を継承する場合にも、全く新しい環境ブロックが構築されている場合にのみ発生します)

+0

ありがとうございました。私は現在、同じバッチを達成するために別のバッチスクリプトを使用しています。実際には、環境変数を展開する必要がある場所で分割しています。スクリプトでは、実行時にスクリプトに渡されるパラメータと環境変数を連結しています。 – Chinmay