Я пытаюсь сделать установщик пакетным способом. Конечно, установщик должен состоять из файлов, которые будут установлены, поэтому я думаю о кодировании файлов в base64, а также просто декодировать их и записывать в место назначения.
Конечно, моя работа была бы очень легкой, если бы в Windows было что-то вроде base64
инструмента, который есть в Linux-коробках. Однако, так как это просто не существует, есть ли способ содержания декодирования base64 полностью с помощью пакетных файлов? И как мне этого добиться?
Любая помощь приветствуется.
(Это просто эксперимент, поэтому меня не беспокоит неэффективность и тому подобное.)
windows
batch-file
base64
user2064000
источник
источник
Ответы:
На самом деле в Windows есть утилита для кодирования и декодирования base64 - CERTUTIL
Я не уверен, в какой версии Windows появилась эта команда.
Чтобы закодировать файл:
Чтобы декодировать файл:
CERTUTIL имеет ряд доступных глаголов и опций.
Чтобы получить список почти всех доступных глаголов:
Чтобы получить справку по определенному глаголу (например, -encode):
Чтобы получить полную справку почти по всем глаголам:
Как ни странно,
-encodehex
глагол не указан сcertutil -?
илиcertutil -v -?
. Но это описано с помощьюcertutil -encodehex -?
. Еще одна удобная функция :-)Обновить
Что касается комментария Дэвида Моралеса, существует плохо документированная опция типа для
-encodehex
глагола, которая позволяет создавать строки base64 без строк верхнего или нижнего колонтитула.Тип 1 даст base64 без строк верхнего или нижнего колонтитула.
См. Https://www.dostips.com/forum/viewtopic.php?f=3&t=8521#p56536 для краткого списка доступных форматов типов. А более подробно о доступных форматах см. Https://www.dostips.com/forum/viewtopic.php?f=3&t=8521#p57918 .
Не исследовано, но у
-decodehex
глагола также есть необязательный аргумент конечного типа.источник
certutil -encode inputFileName encodedOutputFileName
генерирует строку base64, заключенную в "----- BEGIN CERTIFICATE -----" и "----- END CERTIFICATE -----", поэтому вы не можете напрямую декодировать файл после его создания.Вот командный файл base64encode.bat, который кодирует base64.
источник
setlocal enabledelayedexpansion
и используете!base64tmp!
внутри(...)
. В противном случае значение определяется при(...)
считывании последовательности, а не при ее выполнении.