如何在批处理脚本中自动传递GnuPG所需的用户ID输入
解决GPG加密批处理自动输入User ID的问题
我来帮你搞定这个批处理里GPG交互输入的问题,这里有几种实用的方法,优先推荐第一种最可靠的方案:
方法1:直接用GPG的收件人参数(推荐)
GPG本身就提供了跳过交互、直接指定收件人User ID的参数--recipient(缩写为-r),这是最稳妥的方式,完全不需要模拟手动输入。修改你的批处理脚本如下:
@echo off cd /d "C:\Users\User_Name\Desktop\Encryption\Hemant" "C:\Program Files (x86)\GnuPG\bin\gpg.exe" --import PB_Key.gpg "C:\Program Files (x86)\GnuPG\bin\gpg.exe" -e -r "Test" Test.txt
关键说明:
*-r "Test"*:直接告诉GPG要将文件加密给User ID为Test的收件人,彻底跳过了交互输入步骤。*cd /d*:加上/d参数可以确保跨盘符切换目录时不会出错,同时路径用引号包裹避免空格导致的问题。
方法2:用echo管道模拟输入
如果你因为某些原因必须通过模拟手动输入的方式传递User ID,可以使用echo命令结合管道符|,把输入内容直接传给GPG命令:
@echo off cd /d "C:\Users\User_Name\Desktop\Encryption\Hemant" "C:\Program Files (x86)\GnuPG\bin\gpg.exe" --import PB_Key.gpg echo Test | "C:\Program Files (x86)\GnuPG\bin\gpg.exe" -e Test.txt
说明:
echo Test |:把字符串Test作为标准输入传递给后面的GPG命令,模拟你手动输入并回车的操作。不过这种方式在少数环境下可能因为命令行缓冲问题失效,所以优先选方法1。
方法3:输入重定向
你也可以把需要输入的User ID写入一个文本文件,再通过输入重定向传给GPG:
- 先创建一个
userid.txt文件,内容是Test(注意最后要加一个空行,匹配GPG提示的“End with an empty line”要求) - 修改批处理脚本:
@echo off cd /d "C:\Users\User_Name\Desktop\Encryption\Hemant" "C:\Program Files (x86)\GnuPG\bin\gpg.exe" --import PB_Key.gpg "C:\Program Files (x86)\GnuPG\bin\gpg.exe" -e Test.txt < userid.txt
这种方式和管道原理类似,但需要额外维护一个文本文件,实用性不如前两种。
内容的提问来源于stack exchange,提问作者coder88
相关产品推荐
相关产品推荐

