@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解密所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)