带括号和管道的多行Windows shell命令

时间:2012-12-04 11:56:50

标签: windows batch-file cmd command-prompt

我正在尝试使用Windows上的OpenSSL加密某些表单数据,而我很难弄清楚正确的语法是什么。使用以下命令,OpenSSL返回PKCS7消息,但仍然向我发送& was unexpected at this time消息。

(openssl smime -sign -signer client-public.pem -inkey client-private.pem -outform der -nodetach -binary^ 
formkey1=formvalue1^ 
formkey2=formvalue2^ 
formkey3=formvalue3^ 
^ 
^ 
) | openssl smime -encrypt -des3 -binary -outform pem server-public.pem

我觉得我的管道在那里引起了一些问题,但我不知道应该做些什么才能获得干净,无错误的结果。

1 个答案:

答案 0 :(得分:3)

无需将其拆分为多行 所以你应该首先测试它是否在单行上运行。

然后你可以使用多线插入符号,但不要忘记在下一行添加一个空格,否则它会将完整的文本粘贴在一起而没有任何分隔符。
并且在右括号之前的插入符将失败,因为多行插入符会逃避下一行的第一个字符,因此右括号不会关闭任何内容。

这应该有效

(openssl smime -sign -signer client-public.pem -inkey client-private.pem -outform der -nodetach -binary^
 formkey1=formvalue1^
 formkey2=formvalue2^
 formkey3=formvalue3^
 ^
 ^
 ) | openssl smime -encrypt -des3 -binary -outform pem server-public.pem