如何在Windows批处理中提取字符串中的MASK加密密码
Windows批处理提取KEYSTORE_PASSWORD值的方案
针对你给出的字符串,可通过变量替换+for命令组合精准提取目标密码,以下是可行的批处理代码及说明:
完整代码
@echo off setlocal enabledelayedexpansion set var="/host=the_host/core-service=vault:add(vault-options=[("KEYSTORE_URL" => "C:\wildfly-15.0.1.Final\bin\vault\vault.keystore"),("KEYSTORE_PASSWORD" => "MASK-18BzezESSkb72WrhEf6Rsu"),("KEYSTORE_ALIAS" => "vault"),("SALT" => "1234abcd"),("ITERATION_COUNT" => "120"),("ENC_FILE_DIR" => "C:\wildfly-15.0.1.Final\bin\vault/")])" :: 定位到密码起始位置,删除前面的冗余内容 set "temp_str=!var:*KEYSTORE_PASSWORD" => "=!" :: 截取第一个")"前的内容,自动去除双引号 for /f "delims=)" %%p in ("!temp_str!") do set "vault_password=%%~p" echo 提取到的密码:!vault_password! endlocal
关键步骤说明
- 启用延迟扩展:
setlocal enabledelayedexpansion避免特殊字符(引号、空格)导致的变量解析错误,确保替换逻辑正常执行。 - 定位密码起始点:利用批处理变量替换语法
!var:*匹配字符串=!,删除变量var中从开头到KEYSTORE_PASSWORD" => "的所有内容,直接得到以密码开头的子串。 - 截取目标密码:通过
for /f命令以)为分隔符,截取子串的第一部分;%%~p会自动剥离包裹密码的双引号,最终得到纯净的MASK-xxx值。
内容的提问来源于stack exchange,提问作者Nagaraju Chitimilla
相关产品推荐
相关产品推荐

