C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

フォルダ名の%文字と環境変数の判別方法は? /ぶなっぷ (19/09/10(Tue) 15:15) #92307
Re[1]: フォルダ名の%文字と環境変数の判別方法は? /魔界の仮面弁士 (19/09/10(Tue) 15:25) #92310
Re[1]: フォルダ名の%文字と環境変数の判別方法は? /Hongliang (19/09/10(Tue) 15:25) #92309
  └ Re[2]: フォルダ名の%文字と環境変数の判別方法は? /ぶなっぷ (19/09/10(Tue) 15:35) #92312 解決済み
    └ Re[3]: フォルダ名の%文字と環境変数の判別方法は? /とっちゃん (19/09/10(Tue) 17:17) #92325
      └ Re[4]: フォルダ名の%文字と環境変数の判別方法は? /ぶなっぷ (19/09/11(Wed) 08:53) #92335 解決済み


親記事 / ▼[ 92310 ] ▼[ 92309 ]
■92307 / 親階層)  フォルダ名の%文字と環境変数の判別方法は?
□投稿者/ ぶなっぷ (206回)-(2019/09/10(Tue) 15:15:35)

分類:[ソフトウェア全般] 

2019/09/10(Tue) 15:17:24 編集(投稿者)
「ファイル名を指定して実行」とかに、環境変数指定ってできるじゃないですか。
 (例) %Temp%   → C:\Users\administrator\AppData\Local\Tempフォルダが開く
 (例) %WinDir% → C:\Windowsフォルダが開く

これと同じことを実装したいんですが、
困ったことにフォルダ名に対して、%文字って禁則文字じゃないんですよね。

%Temp%って書かれてたときに、
環境変数のTempなのか?
フォルダ名に%Temp%っていう文字が含まれているのか?
判別するルールってあるんでしょうか。

[ □ Tree ] 返信 編集キー/

▲[ 92307 ] / 返信無し
■92310 / 1階層)  Re[1]: フォルダ名の%文字と環境変数の判別方法は?
□投稿者/ 魔界の仮面弁士 (2367回)-(2019/09/10(Tue) 15:25:54)
No92307 (ぶなっぷ さん) に返信
> フォルダ名に%Temp%っていう文字が含まれているのか?
> 判別するルールってあるんでしょうか。

アプリケーションごとの実装依存ではないでしょうか。.NET 製の自作アプリの話なら、
設定画面あたりに「環境変数を展開する」かどうかのチェックボックスを設け、
Environment.ExpandEnvironmentVariables を呼び出すようにしてみるとか。
[ 親 92307 / □ Tree ] 返信 編集キー/

▲[ 92307 ] / ▼[ 92312 ]
■92309 / 1階層)  Re[1]: フォルダ名の%文字と環境変数の判別方法は?
□投稿者/ Hongliang (891回)-(2019/09/10(Tue) 15:25:47)
環境変数を扱うアプリケーション次第でしょうね。
コマンドプロンプトなどは、その名前の環境変数が定義されている場合は環境変数の内容を使用し、定義されていなければ%を含む文字列と認識するようですね。
この挙動は、.NETではEnvironment.ExpandEnvironmentVariablesメソッドで再現できます。
[ 親 92307 / □ Tree ] 返信 編集キー/

▲[ 92309 ] / ▼[ 92325 ]
■92312 / 2階層)  Re[2]: フォルダ名の%文字と環境変数の判別方法は?
□投稿者/ ぶなっぷ (207回)-(2019/09/10(Tue) 15:35:52)
みなさん、どうもです。

書きながら考えてたんですが、結局、問題になるのは、
環境変数のフォルダ、%Temp%のフォルダが双方とも存在するときに、どっちを
優先するか?だけですね。
コマンドプロンプトが、環境変数であれば、それに従うことにします。

で、それがデフォルト設定で、
> 設定画面あたりに「環境変数を展開する」かどうかのチェックボックスを設け、
もやっておけばバッチリですね。

> この挙動は、.NETではEnvironment.ExpandEnvironmentVariablesメソッドで再現できます。
便利なメソッドを教えていただいてありがとうございました。

解決済み
[ 親 92307 / □ Tree ] 返信 編集キー/

▲[ 92312 ] / ▼[ 92335 ]
■92325 / 3階層)  Re[3]: フォルダ名の%文字と環境変数の判別方法は?
□投稿者/ とっちゃん (634回)-(2019/09/10(Tue) 17:17:34)
No92312 (ぶなっぷ さん) に返信

ちなみに。。。 Native API はこちら。

ExpandEnvironmentStringsA/ExpandEnvironmentStringsW です。
(リンク先は A のほう)
https://docs.microsoft.com/en-us/windows/win32/api/processenv/nf-processenv-expandenvironmentstringsa

やってることは同じですけどねw

[ 親 92307 / □ Tree ] 返信 編集キー/

▲[ 92325 ] / 返信無し
■92335 / 4階層)  Re[4]: フォルダ名の%文字と環境変数の判別方法は?
□投稿者/ ぶなっぷ (209回)-(2019/09/11(Wed) 08:53:14)
ありがとうございます。
.Net版は、こいつのラップですかね。
解決済み
[ 親 92307 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -