7

在 PowerShell 中,我可以回显%TEMP%使用命令的值$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:TEMP使用 PowerShell 的路径?我必须先有长文件名吗?

4

3 回答 3

11

您不需要%TEMP%直接访问环境变量。

.NET 提供了一种GetTempPath方法作为更通用的解决方案。

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

在我的机器上,这将更改为 directory C:\Users\Iain.CORP\AppData\Local\Temp

文档中的注释:

此方法按以下顺序检查环境变量是否存在,并使用找到的第一个路径:

  1. TMP 环境变量指定的路径。

  2. TEMP 环境变量指定的路径。

  3. USERPROFILE 环境变量指定的路径。

  4. Windows 目录。

感谢Joe Angley分享这项技术。

于 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 回答