2011-11-08 3 views
15

以下は、powershellを起動するバッチファイルとして使用されています(先に進むには時間がかかりますが、別のスクリプトで使用されています)。%temp%などが動作しない

とにかく、%systemroot%\ tempと%systemroot%が機能しないことに気付きました。

どのように私はこれを修正できますか?

%systemroot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Unrestricted -File %SystemRoot%\TEMP\ROFS\testing_script_log.ps1 

おかげで、あなたはPowerShellのからではなく、CMDからその行を実行している場合

+1

- PowerShellスクリプトで

& "D:\Visual_Studio_Workspace\AzureUpload\AzureUpload\bin\Debug\AzureUpload.exe" 

AzureUpload.exe私のシステムは素晴らしいです。あなたが持っているエラーはどれですか? –

+0

あなたの右のキリスト教徒....私の愚かさ...パスは間違っています!最終的にはうまくいきましたか? – lara400

答えて

30

、あなたはPowerShellの環境変数の構文を使用することができます。

PS C:\> & "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe" 
+0

私もこれを知りたかったので、それに答えることに感謝します。実際の不具合はパスが間違っていたことです - これは今修正されていますが、上のことを知っておくのは良いことです。 – lara400

+0

私は大きな騒ぎです。なぜあなたはラインの始めに "&"が必要ですか? – YasharBahman

+0

"&"は、指定されたコマンドをバックグラウンドで実行することです – phillyslick

11

あなたは[環境]を使用することができます:: ExpandEnvironmentVariablesを使用すると、文字列内の環境変数を従来の方法で展開できます。

$s = '%systemroot%\temp' 
[Environment]::ExpandEnvironmentVariables($s) 
+0

"$ env.SYSTEMROOT"が動作しないPowerShell 2.0(Windows 2008)で便利です – Akom

0

以下のコードCで正常に検証されました。

// ファイル場所 - ユーザ変数 ストリングのFileLocation = Environment.GetEnvironmentVariable( "AZURE_FILE_PATH"、EnvironmentVariableTarget.User)。 // ファイルの場所 - システム変数 string fileLocation = Environment.GetEnvironmentVariable( "AZURE_FILE_PATH"、EnvironmentVariableTarget.Machine);行わコンソールアプリケーション(Visual_Studio_Workspace \ AzureUpload \ AzureUpload \ binに\デバッグ{.exeファイルの場所})のように上記のコードC#コードを含む

関連する問題