使用 powershell [System.Convert]::FromBase64String 在 .bat 文件中进行 Base64 解码不适用于所有 Base64 编码文本

问题描述 投票:0回答:1

我必须创建一个 .bat 文件来解码通过 CMD 行参数接收到的 Base64 编码文本。我创建了一个,但它解码编码文本“SGVsbG8gV29ybGQh”而不解码文本“aGVsbG93b3JsZA==”。

请在下面找到我用于测试此的bat文件。

echo off
set x=aGVsbG93b3JsZA==
echo Base64 Encoded: %x%
for /f "delims=" %%a in ('powershell " 
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String(%x%))"') do (
  set decodedStr=%%a
)
echo Base64 decoded String : %decodedStr%
set x=SGVsbG8gV29ybGQh
echo Base64 Encoded: %x%
for /f "delims=" %%a in ('powershell " 
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String(\"%x%\"))"') 
do (
  set decodedStr=%%a
)
echo Base64 decoded String : %decodedStr%
pause

添加结果,没有错误。解码后的字符串第一个为空

请分享一个解码bat文件中base64编码字符串的解决方案。 谢谢你

windows powershell batch-file cmd base64
1个回答
0
投票

你逃避错了。

两者都用这个:

for /f "delims=" %%a in (
    'powershell -NoProfile "[system.text.encoding]::UTF8.GetString([system.convert]::frombase64string('%x%'))"'
) do ( 
    set decodedStr=%%a 
)

我还添加了 -NoProfile 所以它应该让它运行得更快一点

© www.soinside.com 2019 - 2024. All rights reserved.