You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中获取脚本所在目录并拆分为指定变量

解决PowerShell固定路径结构的变量提取问题

没问题!针对你这个固定路径结构的提取需求,我给你整理了两种适合新手的实现方式,步骤清晰易懂:

方法一:利用PowerShell自动变量+对象属性(推荐,PowerShell v3+)

这种方式最简洁,因为PowerShell提供了自动变量$PSScriptRoot,直接指向脚本所在的目录,不需要手动拼接路径。

完整代码示例:

# 获取脚本所在的目录(PowerShell v3及以上直接用这个自动变量)
$scriptDir = $PSScriptRoot

# 向上遍历一层,得到包含"Season X"的目录对象
$seasonDir = $scriptDir.Parent

# 再向上遍历一层,提取目录名称就是var1(对应示例里的"Name")
$var1 = $seasonDir.Parent.Name

# 从"Season X"的目录名称中提取数字部分,用正则匹配所有数字
$var2 = [regex]::Match($seasonDir.Name, '\d+').Value

# 验证结果
Write-Host "提取的var1: $var1"
Write-Host "提取的var2: $var2"

关键说明:

  • $PSScriptRoot:PowerShell v3及以后版本的内置变量,直接返回当前脚本所在的目录路径,非常省心。
  • .Parent:目录对象的属性,用来获取上级目录,相当于手动向上走一层。
  • 正则\d+:匹配一个或多个数字,不管是Season 1还是Season 123都能正确提取数字部分。

方法二:兼容老版本PowerShell(v2及以下)

如果你用的是比较旧的PowerShell版本,$PSScriptRoot不可用,可以用$MyInvocation来获取脚本路径:

完整代码示例:

# 获取当前脚本的完整路径
$scriptFullPath = $MyInvocation.MyCommand.Definition

# 提取脚本所在的目录(去掉脚本文件名)
$scriptDir = Split-Path -Path $scriptFullPath -Parent

# 提取"Season X"所在的目录路径
$seasonDirPath = Split-Path -Path $scriptDir -Parent

# 提取var1:上级目录的名称(对应示例里的"Name")
$var1 = Split-Path -Path $seasonDirPath -Leaf

# 提取"Season X"的目录名称,再从中取数字
$seasonDirName = Split-Path -Path $scriptDir -Leaf
$var2 = [regex]::Match($seasonDirName, '\d+').Value

# 验证结果
Write-Host "提取的var1: $var1"
Write-Host "提取的var2: $var2"

关键说明:

  • Split-Path:PowerShell的路径处理命令,-Parent参数返回上级目录,-Leaf参数返回路径的最后一段(也就是目录/文件名)。
  • 正则匹配部分和方法一完全一样,保证数字提取的通用性。

两种方法都能完美适配你说的固定路径结构C:\var1\Season var2\script.ps1,直接把代码复制到你的脚本里就能用啦!

内容的提问来源于stack exchange,提问作者Neorax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 19:47:36