首页/系统/Windows 运维速查/Split-Path / Join-Path 路径处理
PowerShell 基础66 条

Split-Path / Join-Path 路径处理

拆解与拼接路径的标准方法(取代手工字符串拼接),避免双反斜杠、相对路径混乱等问题。

Windows 运维速查系统更新于 2026-10-13

Split-Path / Join-Path 是什么

这两个命令是 PowerShell 里处理路径的标准工具:Split-Path 把一个路径拆出父目录、叶节点(文件名或末级目录),Join-Path 把父路径与子名安全地拼成一个路径。它们比用字符串截取与手工拼反斜杠可靠,能自动处理分隔符重复、相对路径与常见边界情况,是写自动化脚本时最该养成的习惯。

基本信息

适用平台Windows PowerShell 5.1 与 PowerShell 7 通用
语法Split-Path <路径> -Parent|-Leaf|-Extension;Join-Path <父> <子>
常用参数-Resolve 检查路径存在并解析、-NoQualifier 去掉驱动器前缀
配套方法[IO.Path]::GetFileNameWithoutExtension() 等 .NET 路径方法
返回值字符串,可继续参与管道与拼接
相关命令Test-Path、Resolve-Path、Convert-Path

典型使用场景

  • 从完整文件路径里取出所在目录,用于定位同目录下的配置
  • 取文件名或扩展名,按类型分流处理
  • 在脚本里安全拼接输出路径,避免出现双反斜杠
  • 批量处理时构造目标路径,保证跨盘符与相对路径都正确
  • 判断路径是否已存在后再决定是否创建

常用示例

常用示例
Split-Path D:\Web\site\index.html -Parent            # 取父目录 D:\Web\site
Split-Path D:\Web\site\index.html -Leaf              # 取叶节点 index.html
Split-Path D:\Web\site\index.html -Extension         # 取扩展名 .html
Join-Path D:\Web 'site\css'                           # 自动补一个分隔符,结果不会出现双斜杠
Join-Path (Split-Path $PSCommandPath -Parent) 'config.json'   # 脚本自身目录下的配置文件
[IO.Path]::GetFileNameWithoutExtension('D:\a\b.log')  # 取不带扩展名的文件名
Test-Path (Join-Path $env:ProgramData 'MyApp')        # 拼完先判断存在性

常用参数读法

参数作用注意点
-Parent取上级目录根目录再取父级仍返回根目录
-Leaf取末级元素目录路径也能取到目录名
-Extension取扩展名无扩展名时返回空字符串
-Resolve解析并验证存在路径不存在会报错,需配合 -ErrorAction
-NoQualifier去掉盘符或提供程序前缀做相对路径展示时有用
路径里含通配符字符(比如文件名里真有 [ ])时,Split-Path 在部分版本会按通配处理导致报错,此时用 -LiteralPath 参数绕过。
拼接目录时不要在子路径末尾留反斜杠,也不要手工在父路径后面补一个:Join-Path 已经负责分隔符,重复补只会得到双斜杠这种看起来奇怪但多数场景仍能用的路径。

易错点

  • 用手工字符串拼接代替 Join-Path,遇到尾部分隔符就会拼出双反斜杠,某些程序会据此判断路径非法
  • 对含通配符字符的真实路径不加 -LiteralPath,命令报错被误判为路径不存在
  • 用 Substring 截取路径来取父目录,盘符长度或分隔符数量一变就出错,应改用 Split-Path -Parent
  • 在循环里反复解析同一个父目录,脚本变慢且可读性差,先算好放进变量

数据来源与参考

  • Microsoft Learn:Split-Path
  • Microsoft Learn:Join-Path

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌