2013-06-05 9 views
58

Próbuję utworzyć instalator za pomocą polecenia partia. Oczywiście, instalator musi składać się z plików, które zostaną zainstalowane, więc myślę o kodowaniu plików w base64 i po prostu je odkodowuję i zapisuję w miejscu docelowym.Baza danych dekodowania64 w serii

Oczywiście, moja praca byłaby bardzo łatwa, gdyby system Windows miał coś takiego jak narzędzie base64, które zawierają pudełka Linux. Jednakże, ponieważ po prostu go tam nie ma, czy istnieje sposób na dekodowanie zawartości base64 całkowicie przy użyciu plików wsadowych? I jak miałbym to osiągnąć?

Każda pomoc jest doceniana.

(To tylko eksperyment, więc nie martwię się o nieefektywności i tym podobne).

+0

także to sprawdzić: http://f2ko.de/en/b64.php –

Odpowiedz

121

Właściwie systemu Windows posiada narzędzia, które koduje i dekoduje base64 - Certutil

Nie jestem pewien, co wersja systemu Windows wprowadziła to polecenie.

Aby zakodować plik:

certutil -encode inputFileName encodedOutputFileName 

Aby rozszyfrować plik:

certutil -decode encodedInputFileName decodedOutputFileName 

Istnieje szereg dostępnych czasowników i opcji dostępnych Certutil.

Aby uzyskać listę dostępnych prawie wszystkie czasowniki:

certutil -? 

Aby uzyskać pomoc na temat danego czasownika (-encode na przykład):

certutil -encode -? 

Aby uzyskać pełną pomoc dla prawie wszystkich czasowników :

certutil -v -? 

Mysteriously The -encodehex czasownik nie jest wymieniony w certutil -? lub certutil -v -?. Ale jest opisane przy użyciu certutil -encodehex -?. Jest to kolejna poręczna funkcja :-)

+6

[Certutil] (http://technet.microsoft.com/library/cc732443.aspx) istnieje od co najmniej [Windows Server 2003] (http://msdn.microsoft.com/en-us/subscriptions/cc773087.aspx). –

+23

Dałbym pewne dobre kursy, że "base64 w partii" był najbardziej desperacką rzeczą, jaką kiedykolwiek podjąłem w wyszukiwarce –

+0

, a jednak oto jesteśmy! –

4

Oto plik wsadowy o nazwie base64encode.bat, który koduje 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%