[玩转系统] 如何使用 PowerShell 拆分路径 Cmdlet 拆分路径
作者:精品下载站 日期:2024-12-14 13:08:17 浏览:11 分类:玩电脑
如何使用 PowerShell 拆分路径 Cmdlet 拆分路径
您是否需要分割路径来获取它的特定部分?如果是这样,那么 PowerShell Split-Path
就是您可以信赖的朋友。当您使用文件、证书和注册表时,您会注意到路径代表它们的位置。
在某些时候,您可能需要过滤返回路径的哪一部分,也许是在进行自动化时。幸运的是,本教程将教您如何使用 PowerShell Split-Path
cmdlet 来执行此操作。
快点!继续阅读,让我们为您的 PowerShell 武器库提供新武器!
先决条件
如果您打算按照本实践教程中的示例进行操作,则需要一台运行具有 PowerShell 5.1 或更高版本的任何现代 Windows 版本的计算机。本教程将使用 Windows 10 20H2 和 PowerShell 7.1.1。
路径中有什么?
在深入使用 PowerShell Split-Path
cmdlet 之前,我们先确保您清楚什么是路径。路径确定遵循特定格式的项目的位置。
例如,文件的路径可能是C:\demo\subfolder1\TestFile_11.txt。如果您将此路径分成几部分,则该路径将包含以下内容:
- C: 是驱动器或限定符或指定的路径。 限定符是从左侧到冒号(
:
)字符的路径部分。 - \demo\subfolder1\ 是文件夹和子文件夹或容器。
- TestFile_11.txt 是文件名或叶子。叶子是路径的最后一个元素或一部分。
但请记住,路径并不只限于文件和文件夹。其他有效路径可能包括:
- 证书(例如,Cert:\CurrentUser\My)
- 注册表(例如,HKCU:\Software)
- 函数(例如,函数:\New-Guid)
- 变量(例如,变量:\PSEdition)
- Active Directory(例如,AD:\CN=Users,DC=Constoso,DC=com)
PowerShell 拆分路径参数
与任何 cmdlet 一样,Split-Path
附带一组参数,用于操纵 cmdlet 的行为方式并返回其输出。这些参数构成了 PowerShell Split-Path
语法。
-Path
- 此参数接受一个或多个要拆分的路径字符串。该参数还接受管道输入。路径中的通配符也是可以接受的。-LiteralPath
- 与-Path
参数一样,-LiteralPath
参数也接受要分割的路径。但此参数只会按照写入的方式处理路径。这意味着,如果您使用此参数指定路径,该命令将不会解释通配符。-Resolve
- 此参数告诉Split-Path
cmdlet 解析您提供的路径引用的文件或项目。由于其字面性质,您不能将此参数与-LiteralPath
参数一起使用。-IsAbsolute
- 该参数返回一个布尔值,以确定您指定的路径是否是绝对路径。
PowerShell Split-Path
cmdlet 还有一个名为 -Credential
的参数,该参数据称接受凭据 PSCredential 对象。但根据 Microsoft 的说法,任何现成的 PowerShell 提供程序都不支持此参数,并且在使用它时会引发错误。
以下参数称为“分割位置参数”。这些参数告诉 PowerShell Split-Path
cmdlet 要返回路径的哪个元素或部分。由于 cmdlet 只能返回路径的一个元素,因此您一次只能使用这些参数之一。
-Parent
- 返回指定路径的父位置(不带项目或文件名)。此参数也是默认的分割位置参数,这意味着您可以省略此参数,但仍然获得父位置结果。-Leaf
- 仅返回路径或叶子的最后一个元素。-LeafBase
- 仅返回路径的最后一个元素或不带扩展名的叶。此参数仅在 PowerShell 6.0 及更高版本中可用。-Extension
- 仅返回叶的扩展名(从最后一个点“.
”到路径的最后一个字符)。此参数仅在 PowerShell 6.0 及更高版本中可用。-Qualifier
- 仅返回路径的驱动器或限定符。-NoQualifier
- 从路径的其余部分中删除驱动器或限定符。
使用 PowerShell 拆分路径 Cmdlet(示例)
PowerShell Split-Path cmdlet 允许您拆分和剖析路径的各个部分。执行此操作后,您可以指定要返回路径的哪一部分。根据您的输出要求,您可以选择返回限定符、不带限定符的路径和文件名。
获取路径的父文件夹
要返回路径的父文件夹,请运行 PowerShell Split-Path
cmdlet 并附加 -Parent
参数。
Split-Path -Path C:\demo\subfolder1\TestFile_11.txt -Parent
下面的结果显示该命令返回父文件夹的路径。
提示:运行不带参数的 PowerShell Split-Path cmdlet 将默认返回父文件夹,与使用 -Parent
参数的行为相同。
提示:-Path
参数接受多个路径,这允许您在单个命令中拆分多个路径字符串值。
例如,Split-Path -Path 'c:\folder1','c:\folder2'
显示不带限定符的路径
想象一下,您正在创建一个脚本,将文件夹树结构从一个驱动器复制到另一个驱动器(例如,C:\demo\subfolder1 到 D:\demo\subfolder1) 。您可能希望代码拆分源路径并仅获取没有驱动器号的文件夹结构。
要获取不带限定符的路径,请运行带有 -NoQualifier
参数的 PowerShell Split-Path
cmdlet,如以下命令所示。此命令分割路径,同时省略结果中的驱动器号。
Split-Path -Path C:\demo\subfolder1 -NoQualifier
从下面的结果中可以看出,使用 noQualifier
参数返回路径,但不带限定符字符串。
获取路径的驱动器或限定符
有时您可能需要仅返回限定符或驱动器号。例如,当您希望脚本根据驱动器盘符汇总结果时。
为此,请使用 -Qualifier
参数运行下面的 PowerShell Split-Path
命令。此命令将分割路径并仅返回限定符字符串作为结果。
Split-Path -Path C:\demo\subfolder1\TestFile_11.txt -Qualifier
显示文件、目录或项目的名称
将路径视为一棵树。限定符可以是树本身,文件夹是树枝,最后,您会找到叶子。叶子是路径末尾的任何非零长度字符串。
当您需要分割路径来获取叶子时,请运行下面的 Split-Path
命令并附加 -Leaf
参数。
Split-Path -Path C:\demo\subfolder1\TestFile_11.txt -Leaf
结果,下图显示该命令仅从您指定的路径返回文件名。
拆分文件名和扩展名(≥PowerShell 6.0)
注意:本节适用于 PowerShell 6.0 及更高版本。
所以你已经分割了路径并返回了项目。在本例中,该项是一个文件名 (TestFile_11.txt),它由两部分组成:基本部分和扩展名。 PowerShell Split-Path
cmdlet 允许您使用 -LeafBase
和 -Extension
参数将叶进一步拆分为这两部分。
要获取文件名的基本名和扩展名,请运行以下命令。
如果路径没有扩展名,Extension
参数将返回空字符串。
Split-Path -Path C:\demo\subfolder1\TestFile_11.txt -LeafBase
Split-Path -Path C:\demo\subfolder1\TestFile_11.txt -Extension
拆分文件名和扩展名 (≤ Windows PowerShell 5.1)
遗憾的是,-LeafBase
和 -Extension
参数在 Windows PowerShell 5.1 及更低版本中不可用。不过不用担心,借助一些 PowerShell 魔法,即使您只有 Windows PowerShell 5.1,也可以复制这些参数的输出。
但您将使用下一个最好的方法来代替 Split-Path
cmdlet,即 split()
方法和 -replace
的组合操作员。
PowerShell 字符串对象(例如路径)包含 split()
方法。此方法允许您根据您提供的分隔符将字符串拆分为多个元素。对于路径,分隔符是 (\
) 反斜杠字符。
另一方面,-replace
运算符允许您使用正则表达式 (RegEx) 替换字符串。
要模拟 -LeafBase
参数结果,请在 PowerShell 中运行以下命令。
# Split the path ('C:\demo\subfolder1\TestFile_11.txt') using '\' as the delimiter.
# Select the last '[-1]' element after the split (TestFile_11.txt)
# Search the string that matches this pattern --> '\.[^.]*$'
# ^ this pattern will match the last dot "." in the path AND every other character after it.
# Then replace the match with nothing/empty value ''.
('C:\demo\subfolder1\TestFile_11.txt').split('\')[-1] -replace '\.[^.]*$',''
因此,下面的屏幕截图显示该命令仅返回文件名的基本名称。
现在,要仅获取文件扩展名,请在 PowerShell 中运行以下命令。
# Split the path ('C:\demo\subfolder1\TestFile_11.txt') using '.' as the delimiter.
# Select the last '[-1]' element after the split (txt)
('C:\demo\subfolder1\TestFile_11.txt').split('.')[-1]
下面的结果显示该命令仅返回文件扩展名 - txt
。
确定路径是否是绝对路径
作为系统管理员,您会遇到两种路径类型:绝对和相对。但有什么区别呢?绝对路径以限定符开头,例如 C:\demo 或 HKCU:\Software。相反,相对路径没有限定符,例如 .\demo 或 \folder1\folder2。
PowerShell Split-Path
cmdlet 可以帮助您使用 -IsAbsolute
参数识别绝对路径。为此,请运行以下命令以确定路径是否是绝对路径。
# This path is absolute
Split-Path -Path C:\demo\subfolder1\TestFile_11.txt -IsAbsolute
# This path is relative
Split-Path -Path .\demo\subfolder1\TestFile_11.txt -IsAbsolute
如下所示,-isAbsolute
参数返回一个布尔值,指示路径是绝对路径 (TRUE
) 还是相对路径 (FALSE
) 。
使用通配符分割和解析路径
到目前为止,您使用 Split-Path
cmdlet 拆分的路径不必是现有路径。无论路径是否存在,此 cmdlet 都会将其拆分并给出结果。
但是 PowerShell Split-Path
cmdlet 还有另一个名为 -Resolve
的参数。此参数允许您解析通配符引用的项目。如果您要使用此参数,则您要拆分的路径及其中的项目必须已存在。
例如,要返回与 *.txt
文件扩展名匹配的项目,请运行以下命令。 -Leaf
参数确保 cmdlet 仅返回项目而不返回父容器。
(*
) 通配符代表一个或多个要匹配的字符,而 (?
) 代表单个字符通配符。
Split-Path -Path C:\demo\subfolder1\*.txt -Leaf -Resolve
下面的结果列出了文件 TestFile_11.txt 到 TestFile_20.txt。这些文件都与 .txt
文件扩展名匹配。
要解析单个字符匹配,请将星号 (*
) 通配符替换为 (?
) 通配符,如下面的命令。
Split-Path -Path C:\demo\subfolder1\TestFile_2?.txt -Resolve -Leaf
下面的输出仅显示文件 TestFile_20.txt,因为该文件是唯一匹配的文件。
如果路径包含转义字符,例如重音符号 (“`),请将路径括在单引号中以解析路径。例如,下面的命令分割并解析包含转义字符的路径。
Split-Path -Path 'C:\demo\subfolder1\dir`n\TestFile_2?.txt' -Leaf -Resolve
作为概念证明,如果您不将该路径用单引号括起来,该命令将返回一条错误,指出该路径不存在。如果您使用双引号,也会发生同样的错误。
Split-Path -Path C:\demo\subfolder1\dir`n\TestFile_2?.txt -Leaf -Resolve
Split-Path -Path "C:\demo\subfolder1\dir`n\TestFile_2?.txt" -Leaf -Resolve
结论
PowerShell Split-Path
cmdlet 是系统管理员和用户不可或缺的工具。本教程旨在教您如何使用 Split-Path
cmdlet 拆分任何给定路径并根据您使用的参数返回特定元素。
您以前在任务中使用过 Split-Path
吗?如果没有,本教程是否说服您在手动或自动化工作中使用它?或者您是否知道另一种比 PowerShellSplit-Path
更好的分割路径的方法?
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag