Powershell获取当前脚本目录名称

11

我正在尝试将当前文件夹名称存储到一个变量中(仅限文件夹名称,而不是完整路径)。

我在互联网上找到的所有内容都像这样:

PS C:\temp> get-location

Path
----
C:\temp

但是我想要的只是将"temp"存储在一个变量中。我该怎么做呢?

1个回答

27
您可以使用Split-Path命令并带上-Leaf参数从Get-Location中获取文件夹名称。
PS C:\temp> Get-Location

Path
----
C:\temp

PS C:\temp> Split-Path -Path (Get-Location) -Leaf
temp

我们还可以使用自动变量$PWD来获取当前目录:

PS C:\temp> Split-Path -Path $pwd -Leaf
temp

或者使用自动变量$PSScriptRoot,该变量使用运行脚本的当前目录:

Split-Path -Path $PSScriptRoot -Leaf

-Leaf文档中可知:

表示此 cmdlet 只返回路径中的最后一个项目或容器。例如,在路径 C:\Test\Logs\Pass1.log 中,它只返回 Pass1.log。

另外,正如@Scepticalist在评论中提到的,我们可以使用Get-Item并从特定文件夹(而不仅是当前工作目录)选择BaseNameSelect-Object

PS C:\> Get-Item -Path c:\temp | Select-Object -Property BaseName

BaseName
--------
temp

或者使用成员枚举(PowerShell v3+)直接选择BaseName属性:

PS C:\> (Get-Item -Path C:\temp).BaseName
temp

1
还要确保您需要Get-Location。如果您需要特定文件夹名称而不是当前工作目录名称,也可以使用Get-Item -Path c:\temp | Select BaseName。 - Scepticalist
1
@Scepticalist 很好的观点。我们可以使用 (Get-Item -Path C:\temp).BaseName 来获取基本名称。 - RoadRunner
要获取当前脚本目录的文件夹名称,就像标题所要求的那样,您可以使用 Split-Path $PSScriptRoot -Leaf - Theo
(pwd).Path 也可以。 - Bob Lokerse

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