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

9
在PowerShell中,我可以使用命令$Env:TEMP打印出%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路径?我需要先有长文件名吗?
4个回答

14

你不需要直接访问%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 目录。

感谢Joe Angley分享这个技巧。


9

首先通过以下方式解析$env:temp的fullname,然后打开它:

cd (gi $env:temp).fullname

谢谢,对我有用。最终我决定使用.NET方法,因为它比依赖一个环境变量更加健壮。请查看我的答案以获取更多详细信息。 - Iain Samuel McLean Elder

8

cd $env:temp

这对我很有效。


2
这在我的环境中失败了,正如我在问题中所演示的那样。在你的环境中它返回什么?我认为如果$Env:TEMP返回一个8.3文件名,而不是长文件名,这种方法将会失败。 - Iain Samuel McLean Elder

-1
我建议使用本地的.Net方法来获取系统临时路径,而不是从本地系统变量中检索,比如$Env:TEMP。
这样你可以更有把握地找到路径:
cd $([System.IO.Path]::GetTempPath())
或者以稍微编程的方式来实现:
$tmpPath = [System.IO.Path]::GetTempPath()
cd $tmpPath

enter image description here


这个解决方案与被接受的答案是一样的。 - Iain Samuel McLean Elder
你的回答被标记为抄袭内容,我建议删除该回答。 - sanitizedUser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接