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

[玩转系统] 如何在 PowerShell 中从路径获取文件名?

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

如何在 PowerShell 中从路径获取文件名?


在 PowerShell 中处理文件系统操作时,出现的一个常见任务是从给定路径中提取文件名。这在脚本编写中特别有用,您需要根据文件的名称或扩展名来操作文件。 PowerShell 提供了多种方法来实现此目的,在这篇博文中,我们将探讨一些从 PowerShell 中的完整文件路径获取文件名的最有效方法。

要从 PowerShell 中的路径获取文件名,您可以使用带有 -Leaf 参数的 Split-Path cmdlet,该参数会提取路径的最后一个元素,即文件名。或者,您可以使用 .NET Path 类方法 GetFileName() 或 GetFileNameWithoutExtension() 来达到相同目的。以下是使用 Split-Path 的简单示例:

$fullPath = 'C:\Users\Example\Documents\File.txt'
$fileName = Split-Path $fullPath -Leaf

这会将 $fileName 设置为 File.txt

从 PowerShell 中的路径获取文件名

PowerShell(和 Windows)中的文件路径通常由驱动器号、后跟一系列目录、最后是带有扩展名的文件名组成。例如,C:\Users\JohnDoe\Documents\Report.docx

现在让我们检查从 PowerShell 中的路径获取文件名的不同方法。

方法 1:使用拆分路径 Cmdlet

Split-Path 是 PowerShell 中专为处理路径而设计的内置 cmdlet 之一。此 cmdlet 可用于将路径拆分为其组件并仅提取文件名。

这是一个例子。

$fullPath = 'C:\MyFolder\example.txt'
$fileName = Split-Path $fullPath -Leaf

-Leaf 参数告诉 Split-Path 检索路径中的最后一项,即文件名和扩展名。如果您只需要不带扩展名的文件名,可以将 Split-PathGet-Item cmdlet 中的 BaseName 属性结合起来:

$fileNameWithoutExtension = (Get-Item $fullPath).BaseName

这是完整的 PowerShell 脚本。

$fullPath = 'C:\MyFolder\example.txt'
$fileName = Split-Path $fullPath -Leaf
Write-Host 'File name- '$fileName
$fileNameWithoutExtension = (Get-Item $fullPath).BaseName
Write-Host 'File name without extension- ' $fileNameWithoutExtension

您可以在下面的屏幕截图中查看输出;我使用 VS Code 执行该脚本。

[玩转系统] 如何在 PowerShell 中从路径获取文件名?

方法 2:使用 Get-ChildItem Cmdlet

另一个对文件操作有用的 cmdlet 是 Get-ChildItem。此 cmdlet 可用于列出目录中的项目,但它也可以帮助从 PowerShell 中的路径中提取文件名。

$fullPath = 'C:\Users\Bijay\Documents\Report.docx'
$fileInfo = Get-ChildItem $fullPath
$fileName = $fileInfo.Name

在这里,Get-ChildItem 检索表示文件的对象,Name 属性为您提供带有扩展名的文件名。

方法 3:使用 .NET Path

PowerShell 还可以利用 .NET Framework 的 Path 类来处理文件路径。 Path 类有一个静态方法 GetFileName(),它从路径字符串返回文件名和扩展名。

以下是使用 .Net Framework 方法从 PowerShell 中的路径获取文件名的示例。

$fullPath = 'C:\Users\Bijay\Documents\Report.docx'
$fileName = [System.IO.Path]::GetFileName($fullPath)

如果需要获取不带扩展名的文件名,可以使用GetFileNameWithoutExtension()方法:

$fileNameWithoutExtension = [System.IO.Path]::GetFileNameWithoutExtension($fullPath)

方法 4:使用字符串操作

您还可以在 PowerShell 中使用传统的字符串操作方法从路径中提取文件名。

这是完整的 PowerShell 脚本。

$fullPath = 'C:\Users\Bijay\Documents\Report.docx'
$fileName = $fullPath.Substring($fullPath.LastIndexOf('\') + 1)
$fileName

此脚本使用 Substring 方法获取从紧接最后一个反斜杠之后的字符(文件名开始的位置)开始的字符串部分。

结论

从 PowerShell 中的路径提取文件名是一个简单的过程,可以使用各种技术来实现。我在这里解释了使用 Split-PathGet-ChildItem 等内置 cmdlet 从 PowerShell 中的路径获取文件名的不同方法,利用 .NET Path 类方法,或执行字符串操作等。

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

取消回复欢迎 发表评论:

关灯