使用 Powershell 将目录路径 (String) 拆分为两个字符串

问题描述

我是 Powershell 的新手,我花了一整天时间研究如何拆分字符串 我有这个字符串路径

RootFolder\Subfolder1\SubFolder2\SubFolder3

我想将其拆分为两个字符串,以便第一个字符串包含 RootFolder,第二个字符串包含字符串的其余部分。

例如:RootFolder\Subfolder1\SubFolder2\SubFolder3

$rootFolder = RootFolder 
$subFolders = Subfolder1\SubFolder2\SubFolder3

提前致谢!

解决方法

这里有一些方法供您使用:

使用字符串的 Split() 方法

$root,$path = "RootFolder\Subfolder1\SubFolder2\SubFolder3".Split("\",2)

$root # --> RootFolder
$path # --> Subfolder1\SubFolder2\SubFolder3

使用字符串的 IndexOf() 方法

$folder = "RootFolder\Subfolder1\SubFolder2\SubFolder3"
$index = $folder.IndexOf("\")
$root  = $folder.Substring(0,$index)
$path  = $folder.Substring($index + 1)

$root # --> RootFolder
$path # --> Subfolder1\SubFolder2\SubFolder3

甚至类似的东西

$folder = "RootFolder\Subfolder1\SubFolder2\SubFolder3" -split '\\'
$root   = $folder[0]
$path   = $folder[1..($folder.Count -1)] -join '\'

$root # --> RootFolder
$path # --> Subfolder1\SubFolder2\SubFolder3
,

一种选择是使用拆分运算符:

$splitPath = 'RootFolder\Subfolder1\SubFolder2\SubFolder3' -split '\\',2

给出这个输出:

$splitPath

RootFolder
Subfolder1\SubFolder2\SubFolder3

您可以像这样访问各个部分:

$splitPath[0]

RootFolder

如果路径以驱动器号(例如C:\RootFolder\Subfolder1\SubFolder2\SubFolder3)开头,而您想忽略它,只需增加子串计数:

$splitPath = 'C:\RootFolder\Subfolder1\SubFolder2\SubFolder3' -split '\\',3


$splitPath

C:
RootFolder
Subfolder1\SubFolder2\SubFolder3