当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 将路径拆分为数组 [4 种方法]

作者:精品下载站 日期:2024-12-14 05:28:22 浏览:14 分类:玩电脑

PowerShell 将路径拆分为数组 [4 种方法]


[玩转系统] PowerShell 将路径拆分为数组 [4 种方法]

在 PowerShell 中将路径拆分为数组

使用 Split() 方法

使用 Split() 方法在 PowerShell 中将路径拆分为数组。

使用 Split() 方法:

$path = "C:\Users\John\Desktop\Samples\House_Prediction_Using_Two_File_Dataset.pdf"
$pathIntoArray = $path.Split("\")
$pathIntoArray

输出 :

C:
Users
John
Desktop
Samples
House_Prediction_Using_Two_File_Dataset.pdf

首先,我们定义了一个 $path 变量并将其值设置为路径,如上所示;您可以使用自己的路径初始化它。接下来,我们将 Split() 方法与 $path 变量链接起来,并将 \ 作为分隔符传递给 Split() 方法将 $path 拆分为数组。最后,我们将该数组存储在 $pathIntoArray 变量中。

我们可以使用索引运算符来获取数组的元素。

获取数组中的最后一个元素:

$path = "C:\Users\John\Desktop\Samples\House_Prediction_Using_Two_File_Dataset.pdf"
$pathIntoArray = $path.Split("\")
$last = ($pathIntoArray)[-1]
$last

输出 :

House_Prediction_Using_Two_File_Dataset.pdf

例如:

使用 -Split 运算符

在 PowerShell 中使用 -Split 运算符将路径拆分为数组。

使用 -Split 运算符:

$path = "C:\Users\John\Desktop\Samples\House_Prediction_Using_Two_File_Dataset.pdf"
$pathIntoArray = $path -Split "\"
$pathIntoArray

输出 :

C:
Users
John
Desktop
Samples
House_Prediction_Using_Two_File_Dataset.pdf

此示例与上一个示例类似,但这次我们使用了 -Split 运算符,该运算符将 \ 作为参数。请注意,使用 -Split 运算符时,\ 必须加倍。此外,与之前的代码围栏不同,我们将数组存储在 $pathIntoArray 变量中。

您可能想知道,如果 -Split 运算符和 Split() 方法执行相同的操作,那么为什么要单独使用它们呢?您将字符串拆分为子字符串数组是正确的,但下面列出了一些相似之处和差异:

  • 首先,它们具有不同的语法,因为 Split() 是一种方法,而 -Split 是一个运算符;你可以参考最后两个例子来理解。
  • 两者都根据提供的分隔符分割字符串;但是,-Split 运算符可以根据提供的正则表达式进行拆分,这使得它更加强大。
  • 两者都返回一个字符串数组;您可以使用 GetType() 方法检查返回的类型。例如,$pathIntoArray.GetType()
  • 关于性能,Split() 方法比 -Split 运算符更快,特别是当我们基于单个分隔符进行拆分时。但是,在基于复杂模式进行拆分时,-Split 可以更快,因为它允许正则表达式模式作为分隔符。

现在,您已经了解了 -SplitSplit() 之间的异同,因此请选择最适合您的项目需求的一个。

到目前为止,我们学习了如何将指定文件的路径拆分为数组,但是如果我们要将给定文件的目录和路径拆分为单独的数组怎么办?这是什么意思?假设我们有 C:\Users\John\Documents\file.txt 路径。将路径拆分为数组将生成 C:UsersJohnDocuments file.txt 作为数组元素,而分割目录时将有 C:UsersJohnDocuments 作为数组元素。

如何将目录拆分为数组?让我们在下一节中学习它。

在 PowerShell 中将目录拆分为数组

使用 System.IO.Path 类

将指定文件的目录和路径拆分为单独的数组:

  • 将文件的路径存储在变量中。
  • 使用GetDirectoryName() 检索给定文件的目录。
  • Split() 方法与第一步中创建的路径变量链接起来,以获取路径数组。
  • Split() 方法与第二步中创建的目录变量链接起来,以获取目录的数组。
  • 使用 Write-Host cmdlet 打印自定义结果。

使用 System.IO.Path 类:

$path = "C:\Users\John\Desktop\Samples\House_Prediction_Using_Two_File_Dataset.pdf"
$directory = [System.IO.Path]::GetDirectoryName($path)
$pathIntoArray = $path.Split("\")
$directoryIntoArray = $directory.Split("\")
Write-Host "A path into an array:`n$pathIntoArray"
Write-Host "A directory into an array:`n$directoryIntoArray"

输出 :

A path into an array:
C: Users John Desktop Samples House_Prediction_Using_Two_File_Dataset.pdf
A directory into an array:
C: Users John Desktop Samples

在上面的输出中,数组元素由单个空格分隔。那么我们如何获得这些数组呢?首先,我们将 House_Prediction_Using_Two_File_Dataset.pdf 文件的路径存储在 $path 变量中。接下来,我们使用Path类的GetDirectoryName()方法,提供$path作为参数来获取的目录House_Prediction_Using_Two_File_Dataset.pdf 文件,我们将其存储在 $directory 变量中。

接下来,我们分别将 Split() 方法与 $path$directory 链接起来,以获取存储在 $pathIntoArray 中的两个不同数组$directoryIntoArray 变量。请记住,我们将 \ 作为分隔符传递给 Split() 方法。最后,我们使用 Write-Host cmdlet 在 PowerShell 终端上显示自定义输出。

`n 是 PowerShell 中的唯一字符;我们将其与 Write-Host cmdlet 一起使用来添加新行字符。

现在,考虑一下我们想要完全控制数组元素的情况。例如,我们想要将路径拆分为一个数组,其中包含parent、leaf和qualifier作为数组元素。它们是什么,我们该怎么做?请参阅以下部分来学习。

使用 Split-Path Cmdlet

使用 Split-Path cmdlet 检索路径的各个部分,以在 PowerShell 中形成数组。

使用拆分路径 Cmdlet:

$path = "C:\Users\John\Desktop\Samples\House_Prediction_Using_Two_File_Dataset.pdf"
$pathParent = Split-Path $path -Parent
$pathLeaf = Split-Path $path -Leaf
$pathQualifier = Split-Path $path -Qualifier
$pathIsAbsolute = Split-Path $path -IsAbsolute
$pathIntoArray = @("Parent of the path: $pathParent", 
                   "Leaf of the path: $pathLeaf",
                   "Qualifier of the path: $pathQualifier",
                   "Is the path absolute? (True/False): $pathIsAbsolute")
$pathIntoArray

输出 :

Parent of the path: C:\Users\John\Desktop\Samples
Leaf of the path: House_Prediction_Using_Two_File_Dataset.pdf
Qualifier of the path: C:
Is the path absolute? (True/False): True

我们再次定义并初始化了 $path 变量。然后,我们使用了 Split-Path cmdlet 四次;每次使用不同的参数来获取$path的指定部分。这些参数包括 -Parent-Leaf-Qualifier-IsAbsolute。使用 -Parent 参数检索 House_Prediction_Using_Two_File_Dataset.pdf 文件的父文件夹。它是默认参数,这意味着即使我们省略 -Parent 参数,我们也可以获得父文件夹。

-Leaf 参数为我们提供了文件名,而 -Qualifier 则检索指定文件的根目录。最后,-IsAbsolute参数返回一个布尔值,如果路径是绝对路径则为True;否则,False。什么是绝对路径? 它是从根目录到当前文件的完整文件路径,例如C:\Users\John\Documents\file.txt

对于每个参数,我们将返回值存储在一个单独的变量中,即 $pathParent$pathLeaf$pathQualifier$我们将 pathIsAbsolute 包含在由 @() 表示的数组运算符中,以根据它们创建一个数组。最后,我们将该数组存储在 $pathIntoArray 变量中。

在使用数组运算符 (@()) 时,我们编写了一条自定义消息以使每个数组元素更易于理解。

这就是在 PowerShell 中将路径拆分为数组。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯