%random%
будет постоянным на протяжении всех итераций цикла.Вам нужно включить отложенное расширение и использовать вместо него !random!
.Но я бы даже не стал этого делать, потому что !random!
может давать повторяющиеся значения.Вряд ли, но возможно.Если бы это было невозможно для дубликатов, то это не было бы случайно.
Я бы просто добавил .b64
к исходному имени.
Вам не нужен FINDSTR для фильтрации заголовка/ сноска.Есть опций для управления форматом вывода CERTUTIL .
Я предполагаю, что вы хотите, чтобы закодированные выходные файлы находились в том же каталоге, что и источник.
Поскольку аргументы будутбыть набором имен файлов (путей), вы можете просто выполнить итерацию %*
с помощью FOR.
@echo off
for %%F in (%*) do certutil -encodehex -f %%F %%F.b64 1
Еще один приятный результат приведенного выше - вы можете вызвать сценарий в командной строке с помощью символов подстановки, иЦикл FOR будет повторять все соответствующие файлы.
Но при перетаскивании существует одна потенциальная проблема - Windows правильно заключает файл в кавычки, если в нем есть пробелы.Но он не заключает файл в кавычки, если имя имеет &
без пробелов.
Так что если вы перетаскиваете любые имена файлов с &
, которые не содержат пробелов, тогда простое решениевыше не получится.
Код гораздо сложнее, если вы хотите обрабатывать перетаскивание с &
в имени .