Расшифровка GPG с регулярным выражением

72
7

Я пытаюсь автоматизировать процесс, который перемещает GPG-зашифрованный файл с FTP и расшифровывает его с помощью GPG через командную строку.

Файл зашифрован на стороне отправителя, и соглашение об именах будет FILENAME_YYYYMMDD.csv.gpg. Я могу расшифровать конкретный файл, если знаю полное имя, но с момента изменения даты я не уверен, как с этим справиться.

gpg --batch --passphrase EXAMPLE_PASSPHRASE --output "C:\Sender\FILENAME_20150327.csv.gpg.csv" --decrypt "C:\Sender\FILENAME_20150327.csv.gpg"

Это работает на сегодняшний день файл (FILENAME_20150327.csv.gpg), но когда я пытаюсь использовать * в качестве подстановочного знака, ala

gpg --batch --passphrase EXAMPLE_PASSPHRASE --output "C:\Sender\FILENAME*.csv.gpg.csv" --decrypt "C:\Sender\FILENAME*.csv.gpg"

ошибка отбрасывается с помощью "gpg: handle plaintext failed: Invalid argument"

Любое понимание было бы высоко оценено!

спросил(а) 2015-03-27T20:07:00+03:00 5 лет, 8 месяцев назад
1
Решение
71

Я нашел обходное решение после прочтения http://parkingandyou.com/2013/02/08/wild-card-work-around-for-gpg-scripting-in-windows/. Вместо того, чтобы пытаться использовать подстановочный шаблон непосредственно в скрипте, я вместо этого задал его как переменную и передал ее в команду.

SET FILETODECRYPT=

cd C:\Sender
for %%a in (FILENAME*.gpg) do set FILETODECRYPT=%%a

gpg --batch --passphrase EXAMPLE_PASSPHRASE --output "C:\Sender\%FILETODECRYPT%.csv" --decrypt "C:\Sender\%FILETODECRYPT%"

Это не самое элегантное решение, но оно выполняет свою работу. FILENAME_YYYYMMDD.csv.gpg заканчивается расшифровкой как FILENAME_YYYYMMDD.csv.gpg.csv, если требуется.

ответил(а) 2015-03-27T21:52:00+03:00 5 лет, 8 месяцев назад
42

GnuPG не выполняет само развертывание подстановочных знаков, а командную строку Windows не будет выполнять, если вы ставите кавычки по пути. Удалите кавычки, поэтому командная строка расширится до полного имени файла.

gpg --batch --passphrase EXAMPLE_PASSPHRASE --output C:\Sender\FILENAME*.csv.gpg.csv --decrypt C:\Sender\FILENAME*.csv.gpg

ответил(а) 2015-03-27T20:54:00+03:00 5 лет, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема