批处理文件 – 批处理脚本GPG解密

批处理文件 – 批处理脚本GPG解密,第1张

概述我正在尝试编写批处理文件来解密全部使用相同公钥加密的.gpg文件的文件夹.这是我到目前为止: @ECHO offSET outbound=C:\encrypted filesSET olddir=%CD%SET password=correcthorsebatterystapleCD /d %outbound%DIR *.gpg /B > tmp.txtFOR /F "tokens=* 我正在尝试编写批处理文件来解密全部使用相同公钥加密的.gpg文件的文件夹.这是我到目前为止:

@ECHO offSET outbound=C:\encrypted filesSET olddir=%CD%SET password=correcthorsebatterystapleCD /d %outbound%DIR *.gpg /B > tmp.txtFOR /F "tokens=*" %%F IN (tmp.txt) DO (    ECHO %%F > tmplen.txt    FOR %%L IN (tmplen.txt) DO (SET namelen=%%~zL)    DEL tmplen.txt    gpg --output %%F:~0,namelen-4 --batch --yes --passphrase %password% --decrypt %%F)DEL tmp.txtCD /d %olddir%

目前它只是打印

usage: gpg [options] [filename]

这是我第一次尝试编写Batch脚本,所以我确信这很简单.

解决方法 以下应该有效:

@ECHO offSET password=correcthorsebatterystaplePUSHD "C:\encrypted files"FOR /F "tokens=*" %%F IN ('DIR *.gpg /B') DO (    gpg --output %%~nF --batch --yes --passphrase %password% --decrypt %%F)POPD

说明:

> PUSHD和POPD用于临时 *** 纵到另一个目录;
>不存在保存DIR输出所需的临时文本文件,因为FOR也能够解析命令的输出(IN()中的集合用”括起来,因此它被解释为命令,而不是文件规格).
>截断文件扩展名(你想用第二个临时文件和内部FOR循环做什么,至少根据我的解释),你只需要给出修饰符~n,在我们的情况下%% ~nF;你的方法不起作用,因为:

>你不能像你在namelen-4那样尝试在线数学(你需要使用一个临时变量和SET / A进行算术运算,然后delayed expansion必须是活动的);
>子字符串扩展如:~0,8不适用于FOR变量(你需要一个临时变量才能做到这一点,然后delayed expansion必须再次激活);

加成:
如果脚本输入文件名中有空格问题,您可能需要用以下命令交换gpg命令行:

gpg --output "%%~nF" --batch --yes --passphrase %password% --decrypt "%%~F"

〜修饰符删除潜在的周围双引号,因此“%% ~nF”和“%% ~F”始终用双引号括起文件名.请注意,“%% F”可能无意中导致双重双引号…

总结

以上是内存溢出为你收集整理的批处理文件 – 批处理脚本GPG解密全部内容,希望文章能够帮你解决批处理文件 – 批处理脚本GPG解密所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1018076.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存