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

如何用PowerShell一行代码提取可执行程序输出的十六进制字符串?

PowerShell单行提取十六进制字符串优化方案

直接用带捕获组的正则匹配,结合Select-String和ForEach-Object可以一步完成提取,最终得到不带0x的4位十六进制字符串:

$test1 = .\some.exe 2>&1 | Select-String '0x([0-9a-fA-F]{4})' | ForEach-Object { $_.Matches.Groups[1].Value }

代码说明:

  • 2>&1:将程序的标准错误输出重定向到标准输出,确保能捕获所有输出内容
  • Select-String '0x([0-9a-fA-F]{4})':匹配包含0x开头的行,通过括号捕获后面的4位十六进制字符(兼容大小写)
  • ForEach-Object { $_.Matches.Groups[1].Value }:从匹配结果中提取捕获组的内容,也就是去掉0x前缀的目标十六进制字符串

关于直接管道使用-match失败的原因:

-match是比较运算符,并非管道 cmdlet,管道传递的对象作为左操作数时,$Matches是全局变量,在管道流中无法稳定捕获匹配结果,也没法直接提取分组内容。而Select-String是专门用于文本匹配的cmdlet,返回的MatchInfo对象包含完整的匹配详情,能可靠提取目标内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:40:48