在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
中打开路径?我必须先拥有长文件名吗?
答案 0 :(得分:10)
您无需直接访问%TEMP%
环境变量。
.NET提供GetTempPath
方法作为更通用的解决方案。
$TempDir = [System.IO.Path]::GetTempPath()
cd $TempDir
在我的计算机上,这会更改为目录C:\Users\Iain.CORP\AppData\Local\Temp
。
来自the documentation的评论:
此方法检查中是否存在环境变量 按照顺序并使用找到的第一个路径:
TMP环境变量指定的路径。
TEMP环境变量指定的路径。
USERPROFILE环境变量指定的路径。
- 醇>
Windows目录。
感谢Joe Angley分享该技术。
答案 1 :(得分:4)
首先解析其全名,然后打开$env:temp
:
cd (gi $env:temp).fullname
答案 2 :(得分:2)
cd $env:temp
这对我有用。