拆分文字路径以获取文件名
Split literal path to get file name
如何通过拆分路径从文字路径获取文件名?
为什么literalPath参数集没有-Leaf参数?
Split-Path -LiteralPath "D:\myDir\file.txt" -Leaf
file.txt 预计
这是一个不幸的错误 -LiteralPath
不适用于 -Leaf
等开关,至少在 PowerShell 7.2.4 之前 - 请参阅GitHub issue #8751.
但是,该错误是良性的,因为使用(可能位置隐含的)-Path
很好,因为 -Path
[=65= 之间的通常区别](可能 wildcard-based paths) and -LiteralPath
(verbatim paths) by default does not apply to the purely textual processing that Split-Path
performs, as Santiago Squarzon 指出。
换句话说:以下应该按预期工作(隐含地将文件路径绑定到 -Path
参数,位置):
Split-Path "D:\myDir\file.txt" -Leaf # -> 'file.txt'
相反,这意味着 - 默认情况下 - Split-Path
不会 解析 wildcard-based 路径 - 发生纯文本拆分:
# NO wildcard resolution (matching), despite (implied) use of -Path
Split-Path "D:\myDir\*.txt" -Leaf # -> '*.txt'
如果需要通配符解析,将(可能隐含的)-Path
参数与-Resolve
开关组合:
# Wildcard resolution (matching), due to use of -Resolve with (implied) -Path
Split-Path -Resolve "D:\myDir\*.txt" -Leaf # -> 'foo.txt', 'bar.txt', ....
请注意 -Path
和 -LiteralPath
之间的区别 在与 [=22= 结合使用时 重要 ]:
与-Path
、-Resolve
执行通配符解析和使用完整路径用于拆分的匹配文件 and/or 个目录,如果有的话;如果没有匹配项,则无输出。
与-LiteralPath
、-Resolve
仅将逐字输入路径解析为完整路径 并使用完整路径进行拆分;如果路径不存在,则报告 non-terminating 错误 。
如何通过拆分路径从文字路径获取文件名? 为什么literalPath参数集没有-Leaf参数?
Split-Path -LiteralPath "D:\myDir\file.txt" -Leaf
file.txt 预计
这是一个不幸的错误 -LiteralPath
不适用于 -Leaf
等开关,至少在 PowerShell 7.2.4 之前 - 请参阅GitHub issue #8751.
但是,该错误是良性的,因为使用(可能位置隐含的)-Path
很好,因为 -Path
[=65= 之间的通常区别](可能 wildcard-based paths) and -LiteralPath
(verbatim paths) by default does not apply to the purely textual processing that Split-Path
performs, as Santiago Squarzon 指出。
换句话说:以下应该按预期工作(隐含地将文件路径绑定到 -Path
参数,位置):
Split-Path "D:\myDir\file.txt" -Leaf # -> 'file.txt'
相反,这意味着 - 默认情况下 - Split-Path
不会 解析 wildcard-based 路径 - 发生纯文本拆分:
# NO wildcard resolution (matching), despite (implied) use of -Path
Split-Path "D:\myDir\*.txt" -Leaf # -> '*.txt'
如果需要通配符解析,将(可能隐含的)-Path
参数与-Resolve
开关组合:
# Wildcard resolution (matching), due to use of -Resolve with (implied) -Path
Split-Path -Resolve "D:\myDir\*.txt" -Leaf # -> 'foo.txt', 'bar.txt', ....
请注意 -Path
和 -LiteralPath
之间的区别 在与 [=22= 结合使用时 重要 ]:
与
-Path
、-Resolve
执行通配符解析和使用完整路径用于拆分的匹配文件 and/or 个目录,如果有的话;如果没有匹配项,则无输出。与
-LiteralPath
、-Resolve
仅将逐字输入路径解析为完整路径 并使用完整路径进行拆分;如果路径不存在,则报告 non-terminating 错误 。