从Powershell中的当前目录路径获取特定路径

时间:2018-06-22 06:39:15

标签: powershell powershell-v2.0 powershell-v3.0 powershell-v4.0

我有命令$PSScriptRoot的当前目录路径,假设该路径为

c:\abc\def\ghi\jkl\ 

现在我要去路径

c:\abc\

所以在powershell中有一条命令可以直接转到该路径?

3 个答案:

答案 0 :(得分:1)

取决于您的实际需求:

1。转到特定的文件夹

cd C:\abc\

2。升三级

cd ..\..\..\

您也可以使用Set-Location代替cd

答案 1 :(得分:1)

要从$PSScriptRoot中提取第一级文件夹,请使用正则表达式。
RegEx ^(...[^\\]+).*$用前三个字符(驱动器号,冒号和\)构建捕获组。
和至少一个非\字符,但要尽可能多,因此要捕获第一级文件夹。

## Q:\Test\2018\06\22\SO_5095782.ps1
"`$PsScriptRoot is {0}" -f $PSScriptRoot
if ($PSScriptRoot -Match '^(...[^\\]+).*$') {
    "First level folder is {0}" -f $Matches[1]
    Push-Location $Matches[1]
}

示例输出(我有一个两行提示,带有时间和目录)

PoSh 12:44:10 Q:\Test\2018\06\22______________________
> .\SO_5095782.ps1
$PsScriptRoot is Q:\Test\2018\06\22
First level folder is Q:\Test
PoSh 12:44:15 Q:\Test_________________________________

使用sls / Select-String编辑简化版本和版本

if ($PSScriptRoot -Match '^(...[^\\]+).*$'){PushD $Matches[1]}

$PSScriptRoot|sls '^(...[^\\]+).*$'|%{Pushd $_.Matches.Groups[1].Value}

答案 2 :(得分:0)

您要做的是更改目录,使用PowerShell,您可以使用cd cmdlet

在您的示例中,如果您指向

c:\abc\def\ghi\jkl\

c:\abc\

您将放置cd c:\abc\

有关此的更多信息:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-powershell-1.0/ee176962(v=technet.10)

另一个不错的资源是get-help cmdlet。 get-help cd也将提供一些有用的信息。