GPG解密与正则表达式

时间:2015-03-27 17:07:41

标签: regex encryption gnupg

我正在尝试自动执行从FTP移动GPG加密文件并使用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:notvalid argument”

会抛出错误

非常感谢任何见解!

2 个答案:

答案 0 :(得分:2)

我在阅读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。

答案 1 :(得分:0)

GnuPG本身不执行通配符扩展,如果在路径周围放置引号,则Windows命令行将不会执行。删除引号,以便命令行扩展为完整文件名。

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