![如何阻止 Windows 命令行在每个命令后输出空行?](https://linux22.com/image/1228120/%E5%A6%82%E4%BD%95%E9%98%BB%E6%AD%A2%20Windows%20%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%9C%A8%E6%AF%8F%E4%B8%AA%E5%91%BD%E4%BB%A4%E5%90%8E%E8%BE%93%E5%87%BA%E7%A9%BA%E8%A1%8C%EF%BC%9F.png)
我将批处理文件的输出重定向到文本文件,并且不希望每个命令之间都有空行。我意识到我可以使用 perl 单行命令进行后处理,但我宁愿不这样做。是否有选项可以隐藏这些不必要的空行?
答案1
cmd
总是输出新行前它会打印提示符。这意味着
> echo foo
foo
> _
总是会有空白行,因为echo
会自动打印换行符。但是,
> set /p x=foo<nul
foo
> _
中间不会有空行,因为上面是允许打印内容的技巧没有尾随换行符。提示仍然出现在下一行的开头。
这样做大概是为了提示总是在行首,不管上一个命令的输出有多乱。在 UNIX 类系统中,由于上一个命令没有打印换行符,所以提示符通常位于行的中间。
但似乎没有办法阻止他的行为。
您可以轻松地通过管道进行任何操作
findstr /r /v /c:"^$"
尽管。
答案2
这实际上取决于您正在运行的命令,因为它们可能被配置为在运行后执行此操作 - 您可能想看看它们是否具有非详细选项(但是,我怀疑这是否有帮助)。
另一个可以尝试的方法是将其放在开头:
@Echo 关闭
但不幸的是,我认为你不会有太多的运气,因为我认为所有命令在完成后都会有一个换行符(完成后会返回/调出命令提示符)。
最好的办法是使用后期处理工具并简单地删除换行符,但我不知道有哪个好的工具可以推荐。