如何使用Windows batch提取wmic返回的w3wp进程命令行中-h选项后的路径
提取w3wp进程命令行中-h参数后路径的可用命令
下面提供三种不同场景下的可直接运行的方案:
- PowerShell方案(最推荐,Windows原生支持)
无需安装额外工具,直接在PowerShell终端运行即可:
如果你需要基于你给出的wmic命令输出作为输入,可使用以下命令:Get-CimInstance Win32_Process -Filter "name like '%w3wp%'" | ForEach-Object { if ($_.CommandLine -match '-h\s+(".*?")') { $matches[1] } }wmic process where "name like '%w3wp%'" get processid,commandline | Out-String | Select-String '-h\s+(".*?")' | ForEach-Object { $_.Matches.Groups[1].Value } - CMD批处理方案(适合传统CMD脚本场景)
保存为.bat文件直接运行即可:@echo off for /f "tokens=* delims=" %%a in ('wmic process where "name like '%%w3wp%%'" get commandline /value ^| findstr CommandLine') do set "line=%%a" set "line=%line:* -h =%" for /f tokens^=2^ delims^=^" %%p in ("%line%") do echo "%%p" - GNU Awk方案(已安装Git/GnuWin32工具可用)
终端直接运行:wmic process where "name like '%w3wp%'" get commandline | awk 'match($0, /-h\s+(".*?")/, arr) {print arr[1]}'
所有方案都兼容你的示例输出,会直接输出你需要的带引号的完整路径,支持路径带空格、特殊字符的场景。
内容的提问来源于stack exchange,提问作者vho
相关产品推荐
相关产品推荐

