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, sie einfach zu decodieren und an ihr Ziel zu schreiben.
Natürlich wäre meine Arbeit sehr einfach, wenn Windows so etwas wie das base64
Tool hätte, das Linux-Boxen enthalten. Gibt es jedoch eine Möglichkeit, Base64-Inhalte mithilfe von Batch-Dateien vollständig zu dekodieren, da sie einfach nicht vorhanden sind ? Und wie würde ich das erreichen?
Jede Hilfe wird geschätzt.
(Es ist nur ein Experiment, also mache ich mir keine Sorgen um Ineffizienz und ähnliches.)
windows
batch-file
base64
user2064000
quelle
quelle
Antworten:
Tatsächlich hat Windows ein Dienstprogramm, das base64 - CERTUTIL codiert und decodiert
Ich bin nicht sicher, welche Windows-Version diesen Befehl eingeführt hat.
So codieren Sie eine Datei:
So dekodieren Sie eine Datei:
CERTUTIL stehen eine Reihe verfügbarer Verben und Optionen zur Verfügung.
So erhalten Sie eine Liste fast aller verfügbaren Verben:
So erhalten Sie Hilfe zu einem bestimmten Verb (z. B. -encode):
Um vollständige Hilfe für fast alle Verben zu erhalten:
Auf mysteriöse Weise ist das
-encodehex
Verb nicht mitcertutil -?
oder aufgeführtcertutil -v -?
. Aber es wird mit beschriebencertutil -encodehex -?
. Es ist eine weitere praktische Funktion :-)Aktualisieren
In Bezug auf den Kommentar von David Morales gibt es eine schlecht dokumentierte Typoption für das
-encodehex
Verb, mit der base64-Zeichenfolgen ohne Kopf- oder Fußzeilen erstellt werden können.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 Liste 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 nachfolgendes Typargument.quelle
certutil -encode inputFileName encodedOutputFileName
wird eine base64-Zeichenfolge generiert, die von "----- BEGIN CERTIFICATE -----" und "----- END CERTIFICATE -----" eingeschlossen wird, sodass Sie die Datei nach ihrer Erstellung nicht direkt dekodieren können.Hier ist eine Batch-Datei namens base64encode.bat, die base64 codiert.
quelle
setlocal enabledelayedexpansion
und die Verwendung!base64tmp!
innerhalb der(...)
. Andernfalls wird der Wert beim(...)
Einlesen der Sequenz bestimmt , nicht beim Ausführen.