我正在尝试做一个使用批处理的安装程序。当然,安装程序需要由将要安装的文件组成,所以我在考虑用base64对这些文件进行编码,然后简单地对它们进行解码并将它们写到它们的目的地。
当然,如果Windows有像Linux盒子中包含的base64
工具,我的工作将会非常容易。然而,由于它根本不存在,有没有办法使用批处理文件完全解码base64内容?我该如何做到这一点呢?
任何帮助都是非常感谢的。
(这只是一个实验,所以我并不担心效率低下之类的问题。)
发布于 2013-06-06 01:55:02
实际上,Windows确实有一个工具可以对base64 - CERTUTIL进行编码和解码
我不确定哪个版本的Windows引入了此命令。
对文件进行编码的步骤:
certutil -encode inputFileName encodedOutputFileName
要解码文件,请执行以下操作:
certutil -decode encodedInputFileName decodedOutputFileName
CERTUTIL有许多可用的动词和选项。
要获取几乎所有可用动词的列表,请执行以下操作:
certutil -?
要获取特定谓词的帮助(例如-encode),请执行以下操作:
certutil -encode -?
要获取几乎所有动词的完整帮助:
certutil -v -?
奇怪的是,certutil -?
或certutil -v -?
中没有列出-encodehex
动词。但它是使用certutil -encodehex -?
描述的。它是另一个方便的函数:-)
更新
关于David Morales的评论,有一个指向-encodehex
动词的poorly documented type option,它允许创建没有页眉或页脚行的base64字符串。
certutil [Options] -encodehex inFile outFile [type]
类型为1将生成不带页眉或页脚行的base64。
有关可用类型格式的简要列表,请参阅https://www.dostips.com/forum/viewtopic.php?f=3&t=8521#p56536。要更深入地了解可用的格式,请参阅https://www.dostips.com/forum/viewtopic.php?f=3&t=8521#p57918。
未进行研究,但-decodehex
谓词也有一个可选的尾随类型参数。
发布于 2017-01-31 03:55:48
这是一个编码base64的批处理文件,名为base64encode.bat。
@echo off
if not "%1" == "" goto :arg1exists
echo usage: base64encode input-file [output-file]
goto :eof
:arg1exists
set base64out=%2
if "%base64out%" == "" set base64out=con
(
set base64tmp=base64.tmp
certutil -encode "%1" %base64tmp% > nul
findstr /v /c:- %base64tmp%
erase %base64tmp%
) > %base64out%
https://stackoverflow.com/questions/16945780
复制相似问题