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

[玩转系统] PowerShell - 从路径获取文件名 [4 种方法]

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

PowerShell - 从路径获取文件名 [4 种方法]


[玩转系统] PowerShell - 从路径获取文件名 [4 种方法]

PowerShell - 从指定路径获取文件名

文件在系统上的位置可以通过其路径来确定。在 PowerShell 中,有多种方法可以从路径获取文件名。首先,在深入研究之前,必须了解路径中的内容。

路径中有什么?

路径以特定格式指示项目的位置。例如,文件的路径可以是C:\folder\subfolder\fileName.txt。如果将路径分成不同的部分,则该路径包括以下部分:

  • C:\ 是驱动器、限定符或指定的路径。限定符从路径的左侧开始,以 co#lon (:) 结束。
  • \folder\subfolder\ 表示文件夹及其子文件夹或容器。
  • fileName.txt 是文件或叶的名称。叶子是路径的最后一部分或元素。
  • .txt 是文件的扩展名。

使用 Split-Path Cmdlet

使用带有 -Leaf 参数的 Split-Path 命令从 PowerShell 中的路径获取文件名。

使用拆分路径 Cmdlet:

Split-Path C:\Intel\project\ConvertString.ps1 -Leaf

输出 :

ConvertString.ps1

在 PowerShell 中,Split-Path cmdlet 返回给定路径的指定部分。正如我们在上一节中看到的,路径的元素只能是父文件夹、子文件夹、文件名或文件扩展名。

在上面的示例中,Split-Path cmdlet 将给定路径 C:\Intel\project\ConvertString.ps1 分解为不同的部分。我们使用上面的-Leaf参数来提取带有扩展名的文件名;正如我们所看到的,ConvertString.ps1 是给定路径中的文件名。

请注意,我们还可以使用带有 -LeafBase 参数的 Split-Path 命令获取不带扩展名的文件名。

将分割路径与 -LeafBase 一起使用:

Split-Path C:\Intel\project\ConvertString.ps1 -LeafBase

输出 :

ConvertString

正如我们所观察到的,返回的文件名 ConvertString 没有 ps1 扩展名。这里,上面使用 -LeafBase 参数来获取不带扩展名的文件名。

注意:仅 PowerShell 6.0 或更高版本支持此参数。

使用 Get-Item Cmdlet

使用 Get-Item cmdlet 从 PowerShell 中的路径获取文件名。 Get-item cmdlet 用于获取指定位置的项目。

使用获取项目 Cmdlet:

Get-Item C:\Intel\project\ConvertString.ps1

输出 :

Directory: C:\Intel\project

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        12/30/2022   9:35 PM            109 ConvertString.ps1

这里,我们使用 Get-Item cmdlet 从指定路径获取文件名;我们可以看到文件的模式、上次更新日期/时间、长度和名称,我们可以通过在 Name 列下查找文件名。

在我们的例子中,ConvertString.ps1 表示文件的名称。如果您只想获取文件名及其扩展名,请在上述命令末尾附加 .Name ,如下所示。

使用带有 .Name 的 Get-Item Cmdlet:

(Get-Item C:\Intel\project\ConvertString.ps1).Name

输出 :

ConvertString.ps1

我们可以看到,现在我们只从给定路径获取扩展名为 ConvertString.ps1 的文件名。如果您不想要文件扩展名,请尝试以下操作:

将 Get-Item Cmdlet 与 .BaseName 结合使用:

(Get-Item C:\Intel\project\ConvertString.ps1).BaseName

输出 :

ConvertString

现在仅返回文件名ConvertString。注意上面的.BaseName属性用于获取文件名,不包括其扩展名。

使用 Get-ChildItem Cmdlet

使用 Get-ChildItem cmdlet 从给定路径获取文件名。

使用 Get-ChildItem Cmdlet:

(Get-ChildItem C:\Intel\project\ConvertString.ps1).Name
(Get-ChildItem C:\Intel\project\ConvertString.ps1).BaseName

输出 :

ConvertString.ps1
ConvertString

具有 .Name 属性的 Get-ChildItem 返回带扩展名的文件名,而 .BaseName 属性返回不带扩展名的文件名。

使用 GetFileName() 方法

使用Path类的GetFileName()方法获取给定路径的文件名和扩展名。

使用 GetFileName 方法:

[System.IO.Path]::GetFileName('C:\Intel\project\ConvertString.ps1')

输出 :

ConvertString.ps1

命令[System.IO.Path]::GetFileName('C:\Intel\project\ConvertString.ps1')从指定文件路径C:\Intel\检索文件名project\ConvertString.ps1 使用 System.IO.Path 类的 GetFileName() 方法。

此处,GetFileName() 方法返回文件名和文件扩展名,但不返回目录路径。因此,例如,如果文件路径为 C:\Intel\project\ConvertString.ps1,则文件名将为 ConvertString.ps1

如果要检索不带文件扩展名的文件名,可以使用 System.IO.Path 类的 GetFileNameWithoutExtension() 方法。例如:

使用 GetFileNameWithoutExtension 方法:

[System.IO.Path]::GetFileNameWithoutExtension('C:\Intel\project\ConvertString.ps1')

输出 :

ConvertString

获取多个文件名

在PowerShell中,我们可以从给定路径获取带有或不带有扩展名的多个文件名。

带扩展

使用 Get-ChildItem cmdlet 从一个或多个给定位置检索项目,通过管道传输到方法 GetFileName() 以获取带扩展名的文件名。

获取带有扩展名的多个文件名:

 Get-ChildItem -Path C:\Intel\project\ -Filter *.ps1 | ForEach-Object -Process {[System.IO.Path]::GetFileName($_)}

输出 :

ConvertString-toDate.ps1
FunctionsFile.ps1

我们使用 Get-ChildItem cmdlet 从一个或多个指定位置提取项目,并通过管道传输到方法 GetFileName() 以获取带扩展名的文件名。例如,Get-ChildItem 用于从给定位置 C:\Intel\project\ 获取文件。

-Filter 参数用于获取扩展名为 .s1 的文件,并使用管道 (|) 将输出发送到下一个命令。之后,我们使用 ForEach-Object 来迭代给定目录中的每个文件。

接下来,将 -Process 参数与 System.IO.Path 类的 GetFileName() 方法一起使用来提取文件的名称带扩展名。我们还可以从给定目录获取多个不带扩展名的文件。让我们看看下面的内容,了解如何做到这一点。

不带扩展

使用 Get-ChildItem cmdlet 将一个或多个指定位置的项目提取到方法 GetFileNameWithoutExtension() 以获取不带扩展名的文件名。

获取多个不带扩展名的文件名:

 Get-ChildItem -Path C:\Intel\project\ -Filter *.ps1 | ForEach-Object -Process {[System.IO.Path]::GetFileNameWithoutExtension($_)}                                       

输出 :

ConvertString-toDate
FunctionsFile

您可以观察到使用上述命令返回了 C:\Intel\project\ 中可用的两个文件。注意,上面的代码与上一节中的代码相同;我们仅用 GetFileNameWithoutExtension() 方法替换了 GetFileName() 方法来获取不带扩展名的文件名。

这就是如何在 PowerShell 中从 Path 获取文件名。

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

取消回复欢迎 发表评论:

关灯