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

PowerShell读取ini文件后如何拆分字符串去除.exe后缀

PowerShell 读取INI字段并去除.exe后缀实现方案

问题根因

你现有拆分逻辑不生效的核心原因是 -split 运算符默认基于正则表达式做匹配,而.在正则语法中是通配符,代表匹配任意单个字符,所以写-split "."会把字符串的每一个字符都单独拆分,完全达不到按点拆分的预期。

可用实现方案

方案1:调用.NET内置方法处理(最推荐)

[System.IO.Path]::GetFileNameWithoutExtension是专门用于提取文件名(不含后缀)的内置方法,容错性最高,就算文件名包含多个点(例如my.app.exe)也能正确去掉最后一段后缀:

# 读取INI中CLREXE字段对应行
$CLREXE = Get-Content -Path "T:\keeran\Test-kill\test.ini" | Select-String -Pattern 'CLREXE'
# 拆分出等号右侧的值,Trim处理掉可能的前后空格
$CLREXE = ($CLREXE -split "=", 2)[1].Trim()
# 去除.exe后缀
$d = [System.IO.Path]::GetFileNameWithoutExtension($CLREXE)

方案2:转义点符号后拆分

如果要坚持用拆分逻辑实现,需要将.转义为普通字符(正则中转义写法为\.):

# 单一点分隔的场景直接取第一段即可
$d = ($CLREXE -split "\.")[0]

# 适配文件名含多个点的场景可以写为:
$segments = $CLREXE -split "\."
$d = $segments[0..($segments.Count - 2)] -join "."

方案3:直接替换.exe后缀

用-replace匹配并删除末尾的.exe字符:

# $代表匹配字符串末尾,避免误替换文件名中间的exe字符
$d = $CLREXE -replace "\.exe$", ""

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:06:03