2013-06-05 17 views
58

Sto tentando di creare un programma di installazione utilizzando batch. Ovviamente, un programma di installazione deve consistere in file che verranno installati, quindi sto pensando di codificare i file in base64, e semplicemente li decodifico e li scrivo alla loro destinazione.Decoding base64 in batch

Ovviamente, il mio lavoro sarebbe molto semplice se Windows avesse qualcosa di simile allo strumento base64 contenuto nelle scatole di Linux. Tuttavia, dato che semplicemente non c'è, c'è un modo per decodificare il contenuto base64 completamente usando i file batch? E come potrei realizzare questo?

Qualsiasi aiuto è apprezzato.

(E 'solo un esperimento, quindi non sono preoccupato per l'inefficienza e simili.)

+0

anche check this out: http://f2ko.de/en/b64.php –

risposta

121

realtà di Windows ha un programma di utilità che codifica e decodifica Base64 - CERTUTIL

io non sono sicuro di quello che la versione di Windows ha introdotto questo comando.

per codificare un file:

certutil -encode inputFileName encodedOutputFileName 

Per decodificare un file:

certutil -decode encodedInputFileName decodedOutputFileName 

Ci sono una serie di verbi disponibili e le opzioni disponibili per CERTUTIL.

per ottenere una lista di verbi quasi tutti disponibili:

certutil -? 

Per ottenere aiuto su un particolare verbo (-encode per esempio):

certutil -encode -? 

per ottenere aiuto completo per quasi tutti i verbi :

certutil -v -? 

Misteriosamente, il -encodehex verbo non è elencato con certutil -? o certutil -v -?. Ma è descritto usando certutil -encodehex -?. È un'altra comoda funzione :-)

+6

[Certutil] (http://technet.microsoft.com/library/cc732443.aspx) è stato intorno dal al Minore [Windows Server 2003] (http://msdn.microsoft.com/en-us/subscriptions/cc773087.aspx). –

+23

Avrei dato delle buone probabilità che "base64 in batch" fosse la cosa più disperata che abbia mai inserito in un motore di ricerca –

+0

eppure eccoci qui! –

4

Ecco un file batch, chiamato base64encode.bat, che codifica 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%