Dekodowanie base64 w partii

Próbuję stworzyć instalator używając batch. 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 dekodować i zapisywać do miejsca docelowego.

Oczywiście, Moja praca byłaby bardzo łatwa, gdyby Windows miał coś w rodzaju narzędzia base64, które zawierają Linux boxes. Jednak, ponieważ po prostu go nie ma, czy jest jakiś sposób, aby dekodować zawartość base64 CAŁKOWICIE za pomocą plików wsadowych? A jak ja osiągnąć to?

Każda pomoc jest mile widziana.

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

Author: kenorb, 2013-06-05

2 answers

W rzeczywistości Windows ma narzędzie, które koduje i dekoduje base64-CERTUTIL

Nie jestem pewien, która wersja systemu Windows wprowadziła to polecenie.

Aby zakodować plik:

certutil -encode inputFileName encodedOutputFileName

Aby rozszyfrować plik:

certutil -decode encodedInputFileName decodedOutputFileName

Istnieje wiele dostępnych czasowników i opcji dostępnych dla CERTUTIL.

Aby uzyskać listę prawie wszystkich dostępnych czasowników:

certutil -?

Aby uzyskać pomoc na konkretny czasownik (- encode na przykład):

certutil -encode -?

Aby uzyskać pełną pomoc dla prawie wszystkie czasowniki:

certutil -v -?

Tajemniczo, -encodehex czasownik nie jest wymieniony z certutil -? lub certutil -v -?. Ale jest to opisane za pomocą certutil -encodehex -?. Jest to kolejna przydatna funkcja: -)

 133
Author: dbenham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-26 13:41:51

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%
 4
Author: BSalita,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-30 19:55:48