【问题标题】:How to change to temp directory in PowerShell?如何在 PowerShell 中更改为临时目录?
【发布时间】:2012-05-28 10:00:59
【问题描述】:

在 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 中的路径?我必须先有长文件名吗?

【问题讨论】:

    标签: powershell temp


    【解决方案1】:

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

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

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

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

    来自the documentation的备注:

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

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

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

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

    4. Windows 目录。

    感谢Joe Angley分享技术。

    【讨论】:

      【解决方案2】:

      首先解析$env:temp 的全名,如下所示:

      cd (gi $env:temp).fullname
      

      【讨论】:

      • 谢谢,这对我有用。最后我决定使用the .NET method,因为它比依赖一个环境变量更健壮。有关详细信息,请参阅我的答案。
      【解决方案3】:

      cd $env:temp

      这对我有用。

      【讨论】:

      • 这在我的环境中失败,正如我在问题中所展示的那样。它在你的身上返回了什么?我认为这种方法在$Env:TEMP 返回8.3 File Name 而不是长文件名的环境中会失败。
      猜你喜欢
      • 1970-01-01
      • 2012-04-21
      • 1970-01-01
      • 2014-12-04
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多