it-swarm.com.de

Base64 im Batch dekodieren

Ich versuche, ein Installationsprogramm mit Batch zu erstellen. Natürlich muss ein Installationsprogramm aus Dateien bestehen, die installiert werden. Daher denke ich darüber nach, die Dateien in base64 zu codieren und sie einfach zu dekodieren und an ihr Ziel zu schreiben.

Natürlich wäre meine Arbeit sehr einfach, wenn Windows so etwas wie das base64 Tool, das Linux-Boxen enthalten. Gibt es jedoch eine Möglichkeit, Base64-Inhalte zu dekodieren vollständig mithilfe von Batchdateien, da sie einfach nicht vorhanden sind? Und wie würde ich das erreichen?

Jede Hilfe wird geschätzt.

(Es ist nur ein Experiment, daher mache ich mir keine Sorgen um Ineffizienz und dergleichen.)

76
user2064000

Tatsächlich verfügt Windows über ein Dienstprogramm, das base64-CERTUTIL codiert und decodiert

Ich bin nicht sicher, welche Windows-Version diesen Befehl eingeführt hat.

So kodieren Sie eine Datei:

certutil -encode inputFileName encodedOutputFileName

So dekodieren Sie eine Datei:

certutil -decode encodedInputFileName decodedOutputFileName

CERTUTIL stehen eine Reihe von Verben und Optionen zur Verfügung.

So erhalten Sie eine Liste mit fast allen verfügbaren Verben:

certutil -?

So erhalten Sie Hilfe zu einem bestimmten Verb (z. B. -encode):

certutil -encode -?

Um vollständige Hilfe für fast alle Verben zu erhalten:

certutil -v -?

Geheimnisvoll ist, dass der -encodehex Verb ist nicht aufgeführt mit certutil -? oder certutil -v -?. Aber es wird beschrieben mit certutil -encodehex -?. Es ist eine weitere nützliche Funktion :-)

Aktualisieren

In Bezug auf den Kommentar von David Morales gibt es eine schlecht dokumentierte Typoption für das -encodehex Verb, mit dem base64-Zeichenfolgen ohne Kopf- oder Fußzeilen erstellt werden können.

certutil [Options] -encodehex inFile outFile [type]

Ein Typ von 1 ergibt base64 ohne die Kopf- oder Fußzeilen.

Unter https://www.dostips.com/forum/viewtopic.php?f=3&t=8521#p56536 finden Sie eine kurze Auflistung der verfügbaren Typformate. Weitere Informationen zu den verfügbaren Formaten finden Sie unter https://www.dostips.com/forum/viewtopic.php?f=3&t=8521#p57918 .

Nicht untersucht, aber das -decodehex verb hat auch ein optionales Argument für den nachgestellten Typ.

152
dbenham

Hier ist eine Batch-Datei mit dem Namen base64encode.bat, die base64 codiert.

@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%
5
BSalita