【问题标题】:Create command line with echo off关闭回显创建命令行
【发布时间】:2017-11-19 05:49:23
【问题描述】:

我已经阅读了一些关于这个主题的文章,但我自己在执行它时遇到了麻烦。我正在尝试创建一个程序来创建一个关闭回显的命令行,这是我目前正在使用的命令:

Runtime.getRuntime().exec( "cmd.exe /q /k start" );

现在,我知道使用 rt.exec() 通常是人们喜欢远离的东西,但这不会是一个大型程序,只是一个小型文本和基于对象的 Java RPG 我'我和我的朋友一起玩乐。

现在,命令行正常显示,但显示就像我刚刚通过 cmd.exe 打开命令行一样。这里有什么我不明白的地方吗?

【问题讨论】:

  • 预期的行为是什么,您观察到的行为是什么?
  • @JosAngelGeorge 就像我说的,命令行显示正常,我的问题是如何使命令行显示,但好像它是在关闭 (at)echo 的情况下创建的?

标签: java windows command-line


【解决方案1】:

使用cmd.exe /q /k start,您最终会得到两个cmd 提示-cmd.exe 一个,start 一个。 start 打开一个新的 shell 提示符,但不是一个安静的提示符(有关 start 的更多信息,请参见此处:https://technet.microsoft.com/en-us/library/cc770297(v=ws.11).aspx)。

我假设你只需要一个 cmd 提示符,所以试试这个:

Runtime.getRuntime().exec( "cmd.exe /q" );

编辑:

我没有考虑到cmd.exe 在被Runtime.getRuntime().exec 执行后终止。
经过一些试验和错误,这应该可以工作:

Runtime.getRuntime().exec( "cmd.exe /q /k start title /i" );

start 的 /i 参数告诉它从调用它的位置继承环境,并且这个环境是安静的,这要归功于 cmd.exe 的 /q 参数。

【讨论】:

  • 运行不再打开命令提示符。现在我只是在一个测试主方法中运行它,并且我有一些用于调试的 println 语句,但是使用这个 exec 它只是打印出所有语句而没有执行命令提示符。
  • @iViscosity 经过反复试验后发现这应该对您有用:Runtime.getRuntime().exec( "cmd.exe /q /k start title /i" ); - 相应地更新了答案。 HTH
  • 它仍然会启动命令提示符,但有 C:\Users\... 我必须手动键入 echo off 才能使回声消失。我正在考虑用它打包一个 .bat 文件来执行我的主类,但我仍然想知道如何做到这一点。
猜你喜欢
  • 1970-01-01
  • 2011-04-16
  • 1970-01-01
  • 1970-01-01
  • 2015-04-19
  • 2020-04-07
  • 2016-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多