如何在PowerShell中更改为临时目录?

时间:2012-05-28 10:00:59

标签: powershell temp

在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时,目录会成功更改。

如何使用PowerShell在$Env:TEMP中打开路径?我必须先拥有长文件名吗?

3 个答案:

答案 0 :(得分:10)

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

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

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

在我的计算机上,这会更改为目录C:\Users\Iain.CORP\AppData\Local\Temp

来自the documentation的评论:

  

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

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

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

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

  6.   
  7. Windows目录。

  8.   

感谢Joe Angley分享该技术。

答案 1 :(得分:4)

首先解析其全名,然后打开$env:temp

cd (gi $env:temp).fullname

答案 2 :(得分:2)

cd $env:temp

这对我有用。