【问题标题】:How to pass the user input in batch file?如何在批处理文件中传递用户输入?
【发布时间】:2018-05-17 07:18:05
【问题描述】:

我有以下脚本。

echo off

cd C:\Users\User_Name\Desktop\Encryption\Hemant test 
"C:\Program Files (x86)\GnuPG\bin\gpg.exe" --import PB_Key.gpg   
"C:\Program Files (x86)\GnuPG\bin\gpg.exe" -e Test.txt 

但之后在命令窗口中询问我用户输入如下 "输入用户 ID。以空行结尾:"

如图所示:

我必须通过“测试”值并点击进入。

但我无法通过上述批处理脚本中的“测试”值。

【问题讨论】:

  • 我不明白你在问什么。您的帖子中只有两件事-应该是@echo off,并且在使用空格更改补丁时,您必须添加双引号cd "C:\Users\tmp0060hk\Desktop\Encryption\Hemant test"
  • 在批处理文件中的 '"C:\Program Files (x86)\GnuPG\bin\gpg.exe" -e Test.txt' 这一行之后。它问我用户输入我必须在哪里更新“测试”值。但是通过批处理文件我无法更新。
  • 为什么不在命令行使用-u USER_ID--local-user的别名)?
  • 感谢您的建议。以上问题有回复吗?
  • 不是答案,而是将cd C:\Users\User_Name\Desktop\Encryption\Hemant test 更改为cd /D "C:\Users\User_Name\Desktop\Encryption\Hemant test",因此cd 即使您在不同的驱动器上也会更改目录...

标签: windows batch-file gnupg


【解决方案1】:

编辑我已经安装了最新的 GnuPG for windows (gpg4win 3.1.1)

其中包含以下库版本:

c:\app\security\GnuPG\bin\gpg.exe --version
gpg (GnuPG) 2.2.7
libgcrypt 1.8.2

至于您的脚本,它应该如下所示

@echo off
cd "C:\Users\User_Name\Desktop\Encryption\Hemant test"
"C:\Program Files (x86)\GnuPG\bin\gpg.exe" --import PB_Key.gpg  
set /p user_id=Please enter your user id:
"C:\Program Files (x86)\GnuPG\bin\gpg.exe" -r "%user_id%" --encrypt Test.txt

Edit2 - 显示整个工作流程(请注意,我已经有了密钥,因此有一条捷克语消息指出密钥没有任何更改)

我的test.bat

@echo off
c:\app\security\GnuPG\bin\gpg.exe --import C:\app\security\GnuPG\mygpgkey_pub.gpg
set /p user_id=Please enter your user id:
c:\app\security\GnuPG\bin\gpg.exe -r "%user_id%" -e VERSION

现在是实际的工作流程:

C:\app\security\GnuPG>dir *.gpg
 Volume in drive C is OSDisk
 Volume Serial Number is 6C83-746F

 Directory of C:\app\security\GnuPG

17.05.2018  13:55             6 731 mygpgkey_priv.gpg
17.05.2018  13:55             3 181 mygpgkey_pub.gpg
               2 File(s)          9 912 bytes
               0 Dir(s)   5 941 710 848 bytes free

C:\app\security\GnuPG>test.bat
gpg: klíč B6E8D7336780XXXX: "John Smith <john.smith@usa.net>" beze změn
gpg: Celkový počet zpracovaných klíčů: 1
gpg:                        beze změn: 1
Please enter your user id:John Smith

C:\app\security\GnuPG>dir *.gpg
 Volume in drive C is OSDisk
 Volume Serial Number is 6C83-746F

 Directory of C:\app\security\GnuPG

17.05.2018  13:55             6 731 mygpgkey_priv.gpg
17.05.2018  13:55             3 181 mygpgkey_pub.gpg
17.05.2018  13:57               609 VERSION.gpg
               3 File(s)         10 521 bytes
               0 Dir(s)   5 941 673 984 bytes free

C:\app\security\GnuPG>cat VERSION.gpg
☻♀♥VsP┼ĎžI}☺ ˙w▬ďÍ[Łu   a↓#ŇÜŔ~>Ö▬ľżŕ↔►►=*Q×♥+Ç$NôCČuy→8Ą'      @⌂∟ĘŽ∟'ôż|→↑|Ţ↕ÄĄú4|-b >%ÄXľ♂Ť  ŮLŤÍ♫∟"˛2ýś+¸ęęHDF\`+-BţYu˙:|ŽÝÍ♣%☺RďGX┼łŠX%?Łä÷äĘo'Ę|3.Ń<ě°§ó☻ÇKŰ+CăÉĆŚßźE˙Ń?bÔj§ž`<?Ř9c♦§Şś>Éb˛       (ďćžDŹ☻jí6♦§-ßÚŇ~♀"kfďxĺk)˘¨äŰ×▼N÷1 3"}Ä-sžóáe↓x.↓=mĘ?Đ'Á♥{>7c♫SA^I˛uÁi!$Źő/¶ˇ  ÇŃyr☺¬+"F-+ílBn¨xŮ«%]"ól5‼ ☺Ë'►JT↓►ď6ÍŤjÍ|ßŃ"@m+/ ¤¶ĆvŐĂwł♦$Ăżçy% O­ÇŁŔóť¤"öbzB0X;♠˙/ăÁbĽH♦_@♣Ôă☻Ĺ◄Ł♣\▲
Ă♀é&/►Ë⌂RĚ 'Yô'­K­ô~Á˝H☻'´pBŚp▬q↓<ÎŃn2Ů *í«[ëťh×űŽ♠oˇ'ĎtČw♠ Sč Pń{vPąŻwĘŰ♣š♂♠↑Öĺ?Űc=¨%ÉöÜš▬űüR0¶ŕ[qäXOżOb%ÁóçĹ;áÄ☺ĹńLúŘ?i┼e3Qť┼{T%Ż<ďĚŇP☺~Çbéx{O☺Ä◄uM× -ۤ[┼^♦ëŐ˙Rđť<2]{\^Ö%E<ÄX4a_R*?^Ç►ë‼♠Ň2ŐČě?z.M 1ä▲ąěŞuźăŁ↔÷q+Ŕ#á'

C:\app\security\GnuPG>cat VERSION
gnupg
2.2.7

C:\app\security\GnuPG>

编辑 3 - 检查密钥是否已导入

c:\app\security\GnuPG\bin\gpg.exe --list-secret-keys --keyid-format LONG

你应该得到这样的东西:

C:/Users/userID/AppData/Roaming/gnupg/pubring.gpg
---------------------------------------------------
sec   rsa4096/B6E8D7336780XXXX 2018-05-17 [SC]
      ABEC1158A91C80AF5B716DCCB6E8D7336780XXXX
uid             [  absolutní ] John Smith <john.smith@usa.net>
ssb   rsa4096/56735087CF9EXXXX 2018-05-17 [E]

编辑 4 - 非交互式批处理脚本:

@echo off
set "user_id=John Smith"

cd "C:\Users\User_Name\Desktop\Encryption\Hemant test"
"C:\Program Files (x86)\GnuPG\bin\gpg.exe" --import PB_Key.gpg  
"C:\Program Files (x86)\GnuPG\bin\gpg.exe" -r "%user_id%" --encrypt Test.txt

【讨论】:

  • 它没有用。当我收到“输入用户 ID”时。以空行结尾'然后我无法使用批处理文件输入值。
  • 回显 cd C:\Users\User_Name\Desktop\Encryption\Hemant test "C:\Program Files (x86)\GnuPG\bin\gpg.exe" --import PB_Key.gpg "C :\Program Files (x86)\GnuPG\bin\gpg.exe" -e Test.txt 在此之后在命令提示符下询问“输入用户 ID。以空行结尾:'这里我无法更新值
  • @Hermant 好吧,您必须在实际输入之前输入 user_id。否则它将无法正常工作。看我的回答。
  • 感谢您的回复。但是我已经尝试了上面的代码,但它没有生成加密的文档。窗口只是卡在收件人处。我做了一些研究,发现以下链接gnupg.org/gph/en/manual/x110.html。通过使用官方网站上给出的以下命令命令,我正在尝试'alice% gpg --output doc.gpg --encrypt --recipient blake@cyb.org doc'。我想加密文档。你能告诉我你的文件是否被加密了吗?
  • @Herman 是的,它确实有效。我将向您展示工作流程。您确定输入的名称正确吗?
猜你喜欢
  • 2013-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
  • 2015-08-29
  • 1970-01-01
  • 2021-06-04
  • 1970-01-01
相关资源
最近更新 更多