7

%TEMP%PowerShell では、コマンドを使用して値をエコーできます$Env:TEMP。私のマシンの出力は次のとおりです。

PS> $Env:temp
C:\Users\IAIN~1.COR\AppData\Local\Temp

コマンドを使用してディレクトリに変更しようとすると、次のcdエラーが表示されます。

PS> cd $Env:temp
Set-Location : An object at the specified path C:\Users\IAIN~1.COR does not exist.
At line:1 char:3
+ cd <<<<  $Env:temp
    + CategoryInfo          : InvalidArgument: (:) [Set-Location], PSArgumentException
    + FullyQualifiedErrorId : Argument,Microsoft.PowerShell.Commands.SetLocationCommand

PowerShell が 8.3 のファイル名を文字どおりに解釈していると思われます。ディレクトリの長いファイル名はC:\Users\iain.CORP\AppData\Local\Temp. を試すcd C:\Users\Iain.CORP\AppData\Local\Tempと、ディレクトリは正常に変更されます。

$Env:TEMPPowerShellを使用してパスを開くにはどうすればよいですか? 最初に長いファイル名を付ける必要がありますか?

4

3 に答える 3

11

%TEMP%環境変数に直接アクセスする必要はありません。

.NETはGetTempPath、より一般的なソリューションとしてメソッドを提供します。

$TempDir = [System.IO.Path]::GetTempPath()
cd $TempDir

私のマシンでは、これはディレクトリに変更されC:\Users\Iain.CORP\AppData\Local\Tempます。

ドキュメントからのコメント:

このメソッドは、次の順序で環境変数の存在をチェックし、最初に見つかったパスを使用します。

  1. TMP環境変数によって指定されたパス。

  2. TEMP環境変数で指定されたパス。

  3. USERPROFILE環境変数によって指定されたパス。

  4. Windowsディレクトリ。

テクニックを共有してくれたJoeAngleyに感謝します。

于 2012-05-28T10:43:07.437 に答える
7

$env:temp最初にフルネームを次のように解決して開きます。

cd (gi $env:temp).fullname
于 2012-05-28T15:52:05.227 に答える
4

cd $env:temp

これは私にとってはうまくいきました。

于 2012-10-12T13:09:13.333 に答える