Как перетащить несколько файлов?

Я делаю пакетный декодер и кодировщик base64, но я хочу иметь возможность перетаскивать несколько файлов, а не только один за раз.

я пробовал это

if "%~1" == "" goto :EOF

for %%I in ("%~1\*.tex") do certutil -encode %* tmp.b64 && findstr /v /c:- tmp.b64 > %random%.b64

вот рабочий код для перетаскивания всего одного файла

certutil -encode %~1 tmp.b64 && findstr /v /c:- tmp.b64 > %random%.b64

пакет не будет кодировать файлы сразу.

используйте сдвиг и идти к

Stephan 11.06.2019 21:09

Взгляните также на это: Batch-Script — перебирать аргументы

aschipfl 11.06.2019 21:27
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
241
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

%random% будет постоянным на всех итерациях цикла. Вам нужно будет включить отложенное расширение и использовать вместо этого !random!. Но я бы даже этого не делал, потому что !random! может давать повторяющиеся значения. Маловероятно, но возможно. Если бы не было дубликатов, то это не было бы случайным.

Я бы просто добавил .b64 к исходному имени.

Вам не нужен FINDSTR для фильтрации верхнего/нижнего колонтитула. Есть параметры для управления форматом вывода CERTUTIL.

Я предполагаю, что вы хотите, чтобы закодированные выходные файлы находились в том же каталоге, что и источник.

Поскольку аргументы будут представлять собой ряд имен файлов (путей), вы можете просто повторить %* с помощью FOR.

@echo off
for %%F in (%*) do certutil -encodehex -f %%F %%F.b64 1

Еще один приятный результат вышеизложенного — вы можете вызывать скрипт в командной строке с подстановочными знаками, и цикл FOR будет перебирать все совпадающие файлы.

Но есть одна потенциальная проблема при перетаскивании — Windows правильно заключает файл в кавычки, если в нем есть пробелы. Но он не заключает файл в кавычки, если в имени есть & без пробелов.

Поэтому, если вы перетащите любые имена файлов с &, которые не содержат пробела, то простое решение выше не удастся.

Код намного сложнее, если вы хотите обрабатывать перетаскивание с помощью & в названии.

есть ли способ использовать большие файлы, такие как ГБ или 5 МБ, вместо небольшого файла, такого как текстовый файл? У меня есть файлы размером 5 МБ или 1 ГБ, которые я хочу закодировать, и можем ли мы обойти ограничение в 32 бита? ошибка: Input Length = 147058392 EncodeToFile вернул арифметический результат, превышающий 32 бита. 0x80070216 (WIN32: 534 ERROR_ARITHMETIC_OVERFLOW) CertUtil: команда -encodehex FAILED: 0x80070216 (WIN32: 534 ERROR_ARITHMETIC_OVERFLOW) CertUtil: арифметический результат превышает 32 бита.

unknown unknown 12.06.2019 04:51

также каков предел размера?

unknown unknown 12.06.2019 05:21

@unknownunknown - ограничения размера CERTUTIL не задокументированы. Другие протестировали и определили, что предел исходного кода base64 составляет 74 472 684 байта. Предел шестнадцатеричного кодирования меньше и составляет 21 510 272 байта. Powershell может кодировать/декодировать base64 и hex, но я понятия не имею об ограничениях размера. Если это не сработает для вас, я думаю, вам нужно будет найти стороннюю утилиту.

dbenham 12.06.2019 13:57

Я уменьшил его до 29 файлов вместо одного, чтобы он работал, и спасибо за вашу работу.

unknown unknown 12.06.2019 19:46

Другие вопросы по теме