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

批处理脚本中PowerShell解码Base64字符串无返回值,求解决

批处理中通过PowerShell解码Base64并存储变量的问题解决

你的解码脚本有两个核心问题,导致无法拿到正确结果:

1. 变量定义的空格陷阱

批处理对空格非常敏感,Set string = "dAB1AHMAdAA=" 这种写法会创建**名为string (末尾带空格)**的变量,而不是你想要的string。之后你引用%string%时,实际是在调用一个未定义的变量,值是空的。

正确的变量定义方式是用引号包裹整个赋值语句,彻底避免空格干扰:

Set "string=dAB1AHMAdAA="

2. PowerShell语句没正确调用批处理变量

你原来的PowerShell解码代码里,"""string""" 是把字符串"string"传给了解码方法,而不是批处理变量string的值。必须把批处理变量%string%正确传递给PowerShell,同时处理好引号转义。

修正后的完整解码脚本

@echo off

Set "string=dAB1AHMAdAA="

for /f "tokens=* delims=" %%i in ('powershell [Text.Encoding]::Utf8.GetString([Convert]::FromBase64String('"%string%"'))') do set "decoded=%%i"

echo %decoded%

关键调整说明

  • 用'%string%'将批处理变量传递给PowerShell:外层单引号是for /f的命令分隔符,内层双引号确保变量值里有特殊字符时也能正确传递。
  • 去掉了冗余的转义符^和三重引号,简化语句的同时保证逻辑正确。

顺带提一句,你的编码脚本也存在同样的变量定义空格问题,修正后的编码脚本如下,这样编码和解码逻辑就能完全对应:

@echo off

Set "string=test"

for /f "tokens=* delims=" %%i in ('powershell [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('"%string%"'))') do set "encoded=%%i"

echo %encoded%

内容的提问来源于stack exchange,提问作者mathan kumar c

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:35:26