首页 > 解决方案 > 删除命令提示符输出中的换行符

问题描述

我使用命令提示符(在 Windows 中)运行 OpenSSL 命令。我使用以下命令

openssl req -pubkey -in X.csr -noout

我得到以下输出:

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DBQcDQgAEDKaFsAauoh2mx418VYbZRButDnbl
wwWlth8Bkb+XV8gwh7399Ite0lkUhQcSAyEu6Xm7DhDSW28a54t0AQiQSw==
-----END PUBLIC KEY-----

我想在一行中获得输出(没有换行符),例如:

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DBQcDQgAEDKaFsAauoh2mx418VYbZRButDnblwwWlth8Bkb+XV8gwh7399Ite0lkUhQcSAyEu6Xm7DhDSW28a54t0AQiQSw==
-----END PUBLIC KEY-----

(或)就像下面的一样

MFkwEwYHKoZIzj0CAQYIKoZIzj0DBQcDQgAEDKaFsAauoh2mx418VYbZRButDnblwwWlth8Bkb+XV8gwh7399Ite0lkUhQcSAyEu6Xm7DhDSW28a54t0AQiQSw==

有人可以帮忙吗?

标签: shellcmdopensslnewlinecommand-prompt

解决方案


您可以使用for /F循环来捕获输出文本并(误用)set /P输出每一行而不使用尾随换行符,如下所示:

for /F "delims= eol=-" %L in ('openssl req -pubkey -in X.csr -noout') do < nul set /P ="%L"

该选项eol=-允许在页眉和页脚行以for /F连字符开头时跳过它们。
(虽然有使用 的 Base64 编码变体-,但您的数据中似乎没有 -+符号,但这取决于OpenSSL您使用的工具。)

%当您想在批处理文件中使用该代码时,不要忘记加倍- 符号!


推荐阅读