92

バッチを使用してインストーラーを作成しようとしています。もちろん、インストーラーはインストールされるファイルで構成されている必要があるため、ファイルをbase64でエンコードし、単純にデコードして宛先に書き込むことを考えています。

もちろん、base64Linux ボックスに含まれるツールのようなものが Windows にあれば、私の作業は非常に簡単になります。しかし、単純に存在しないため、バッチ ファイルを使用してbase64 コンテンツを完全にデコードする方法はありますか? そして、どうすればこれを達成できますか?

どんな助けでも大歓迎です。

(あくまでも実験ですので非効率等は気にしません。)

4

2 に答える 2

178

実際、Windows には base64 をエンコードおよびデコードするユーティリティがあります - CERTUTIL

このコマンドを導入した Windows のバージョンはわかりません。

ファイルをエンコードするには:

certutil -encode inputFileName encodedOutputFileName

ファイルをデコードするには:

certutil -decode encodedInputFileName decodedOutputFileName

CERTUTIL で使用できる動詞とオプションは多数あります。

利用可能なほぼすべての動詞のリストを取得するには:

certutil -?

特定の動詞 (-encode など) のヘルプを表示するには:

certutil -encode -?

ほぼすべての動詞の完全なヘルプを表示するには:

certutil -v -?

不思議なことに、動詞はまたは-encodehexと一緒にリストされていません。しかし、それは を使用して記述されます。それは別の便利な機能です:-)certutil -?certutil -v -?certutil -encodehex -?

アップデート

David Morales のコメントに関しては、ヘッダー行またはフッター行なしで base64 文字列を作成できる動詞の型オプションの文書化が不十分です。-encodehex

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動詞にはオプションの末尾の型引数もあります。

于 2013-06-05T17:55:02.130 に答える
5

これは base64encode.bat というバッチ ファイルで、base64 をエンコードします。

@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%
于 2017-01-30T19:55:48.140 に答える