Próbuję zrobić instalator przy użyciu wsadowego. Oczywiście instalator musi składać się z plików, które zostaną zainstalowane, więc myślę o zakodowaniu plików w base64, a następnie po prostu odkodowaniu i zapisaniu w miejscu docelowym.
Oczywiście moja praca byłaby bardzo łatwa, gdyby Windows miał coś w rodzaju base64
narzędzia, które zawierają Linux-y. Ponieważ jednak go po prostu nie ma, czy istnieje sposób na całkowite zdekodowanie zawartości base64 za pomocą plików wsadowych? Jak miałbym to osiągnąć?
Każda pomoc jest mile widziana.
(To tylko eksperyment, więc nie martwię się o nieefektywność itp.)
windows
batch-file
base64
user2064000
źródło
źródło
Odpowiedzi:
W rzeczywistości system 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:
Aby zdekodować plik:
Istnieje wiele dostępnych czasowników i opcji dostępnych dla CERTUTIL.
Aby uzyskać listę prawie wszystkich dostępnych czasowników:
Aby uzyskać pomoc dotyczącą konkretnego czasownika (na przykład -encode):
Aby uzyskać pełną pomoc dotyczącą prawie wszystkich czasowników:
Co tajemnicze,
-encodehex
czasownik nie jest wymieniony zcertutil -?
lubcertutil -v -?
. Ale jest to opisane za pomocącertutil -encodehex -?
. To kolejna przydatna funkcja :-)Aktualizacja
Jeśli chodzi o komentarz Davida Moralesa, istnieje słabo udokumentowana opcja typu dla
-encodehex
czasownika, która pozwala na tworzenie ciągów base64 bez linii nagłówka lub stopki.Typ 1 zwróci base64 bez linii nagłówka lub stopki.
Zobacz https://www.dostips.com/forum/viewtopic.php?f=3&t=8521#p56536, aby zapoznać się z krótką listą dostępnych formatów typów. Bardziej szczegółowe informacje na temat dostępnych formatów można znaleźć na stronie https://www.dostips.com/forum/viewtopic.php?f=3&t=8521#p57918 .
Nie zbadano, ale
-decodehex
czasownik ma również opcjonalny argument typu końcowego.źródło
certutil -encode inputFileName encodedOutputFileName
generuje łańcuch base64 ujęty w „----- BEGIN CERTIFICATE -----” i „----- END CERTIFICATE -----”, więc nie można bezpośrednio zdekodować pliku po jego utworzeniu.Oto plik wsadowy o nazwie base64encode.bat, który koduje base64.
źródło
setlocal enabledelayedexpansion
i użyjesz!base64tmp!
wewnątrz(...)
. W przeciwnym razie wartość jest określana podczas(...)
wczytywania sekwencji, a nie podczas jej wykonywania.