Powershell仅获取当前脚本目录名称

ste*_*e15 11 powershell

我试图将当前文件夹名称存储到变量中(只是文件夹名称,而不是完整路径)。

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

PS C:\temp> get-location

Path
----
C:\temp
Run Code Online (Sandbox Code Playgroud)

但我想要的只是存储在变量中的“temp”。我怎么能这样做呢?

Roa*_*ner 27

您可以使用以下Split-Path命令获取文件夹名称:Get-Location-Leaf

PS C:\temp> Get-Location

Path
----
C:\temp

PS C:\temp> Split-Path -Path (Get-Location) -Leaf
temp
Run Code Online (Sandbox Code Playgroud)

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

PS C:\temp> Split-Path -Path $pwd -Leaf
temp
Run Code Online (Sandbox Code Playgroud)

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

Split-Path -Path $PSScriptRoot -Leaf
Run Code Online (Sandbox Code Playgroud)

文档-Leaf

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

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

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

BaseName
--------
temp
Run Code Online (Sandbox Code Playgroud)

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

PS C:\> (Get-Item -Path C:\temp).BaseName
temp
Run Code Online (Sandbox Code Playgroud)