管道工程在Powershell中,但不在CMD中?

管道工程在Powershell中,但不在CMD中?,powershell,cmd,pipeline,gnupg,Powershell,Cmd,Pipeline,Gnupg,因此,这个问题的大背景是,无论出于何种原因,都不可能使用Bouncy Castle来解密这个文件,所以我们尝试使用普通的gpg实用程序来执行自动命令行。。。我原本以为这比试图弄明白为什么Bouncy Castle不相信这是一个真正的PGP加密文件要快,但我可能错了 以下是管道: echo password | gpg --batch --yes --passphrase-fd 0 "filename" 这在Powershell中非常有效。事实上,在Powershell中,有几个版本可以完美地工

因此,这个问题的大背景是,无论出于何种原因,都不可能使用Bouncy Castle来解密这个文件,所以我们尝试使用普通的gpg实用程序来执行自动命令行。。。我原本以为这比试图弄明白为什么Bouncy Castle不相信这是一个真正的PGP加密文件要快,但我可能错了

以下是管道:

echo password | gpg --batch --yes --passphrase-fd 0 "filename"
这在Powershell中非常有效。事实上,在Powershell中,有几个版本可以完美地工作,但这不是重点

关键是我试图在cmd.exe中运行它,但它在那里不起作用。相反,我得到一个错误,说没有提供密码,因此没有可用的密钥,因此文件无法解密


考虑到我阅读的说明是专门针对cmd.exe(不是Powershell)的,我有点困惑。你知道这里发生了什么吗?

显然,问题是通过管道传递的密码包含一个空格——这个空格出现在我们假设的“d”和管道符号本身之间。:)

因此,为了将来的参考,这项工作:

echo password|gpg --batch --yes --passphrase-fd 0 "filename"

顺便说一句,这正是指南所说的,但我从来没有领会到,因为我在Powershell中进行了初始测试,没有意识到cmd的echo命令有多么挑剔。

我只是再次尝试用谷歌搜索,然后出现了这个问题:PI是否假定密码没有特殊字符?作为一种解决方法,您可以尝试使用
echo password>pw.txt
将密码放入
pw.txt
并重定向它:
gpg--batch--yes--passphrase fd 0“filename”