通过Windows命令行将特定文件编码为Base64

umuewwlo  于 2023-06-24  发布在  Windows
关注(0)|答案(2)|浏览(366)

我需要在Windows操作系统上使用一个命令行在屏幕上生成特定文件的base64数据(不生成文件)。
我看到在Unix系统上是足够的使用

cat <file_name>| base64

以获取编码为base64的文件内容。
在Windows上,我无法获得相同的结果。
我找到了这个解决方案:

certutil -encode -f <file_name> tmp.b64 && findstr /v /c:- tmp.b64 && del tmp.b64

但这需要系统生成一个临时文件,因此,在最后,去销毁它。仅使用certutil命令,屏幕上的结果会被包含不相关信息的3行所污染。
谁能帮我在Windows上提供一个只生成base64数据的命令?
更新:我改进了屏幕上的结果,通过这个新版本的命令:

certutil -encode -f <file_name> tmp.b64 && cls && findstr /v /c:- tmp.b64 && del tmp.b64

结果更符合我的要求,但我希望避免每次都创建临时文件tmp.b64

wydwbb8l

wydwbb8l1#

我建议在你的Windows机器上安装OpenSSL。设置PATH变量后,就很容易了:

type <file_name> | openssl base64
pinkon5k

pinkon5k2#

生成base64字符串的常用windows方法是
制作任何文件(这里是简单的文本,但可以是PDF,docX或其他任何文件。

echo Hello World!>input.ext

转换为base64

certutil -encodehex -f "input.ext" "output.txt" 0x40000001 1>nul

查看结果使用

type output.txt
SGVsbG8gV29ybGQhDQo=

要发送到另一个命令,请使用管道将TYPE output.txt用作输入。但是,与许多转换任务一样,它需要是文件IO。为了避免任何硬盘驱动器文件的提示,它需要一个内存文件系统。
对于循环文件夹使用一个为循环与变量,以适应
解码output.txt

certutil -decode -f output.txt output.ext 1>nul

type output.ext

Hello World!

答案

有一个非常小的(7.7 kB)downloadable exe c 2015,可用于对文件或控制台进行编码/解码,如下所示

b64 -e input.ext

在屏幕上显示结果或在管道中使用

SGVsbG8gV29ybGQhDQo=

请注意,这与上面的完全相同,但是没有更新关于为什么它可能不总是按预期工作的最新查询,但这是一个出站使用。
未决问题示例

echo Hello World!|b64 -e

与上述结果相比,结果不准确,但槽容量SGVsbG8gV29ybGQhCg==可接受
所以当使用

echo SGVsbG8gV29ybGQhCg==|b64 -d

它确实正确地报告

Hello World!

差异的原因是最后一个EOL
0000000C: 0A 0D
而且根据情况,可能会也可能不会有实质性的差异。另外请注意,命令行的工作长度是有限的,因此控制台的使用对于字符串处理也是有限的

相关问题