【问题标题】:Running java project in command line with user input使用用户输入在命令行中运行 java 项目
【发布时间】:2016-03-12 10:18:54
【问题描述】:

我有一个在命令行中运行的 java 项目。我创建了一个 .bat 文件来运行该项目。但是,我的 java 项目在开始运行之前必须接受 4 个参数,这在我的 .bat 文件中就像这样......

@echo off
pushd %~dp0
java -jar dist/prog.jar 5 6 7 3

pause

(5 6 7 3 being the arguments passed to String[] args)

但是,我不想在 .bat 文件中输入要传递给 String[] args 的特定参数,我希望它由用户输入传递,以便我可以在每次我运行它的命令行。我该怎么做?

【问题讨论】:

标签: java batch-file command-line command-line-arguments command-prompt


【解决方案1】:

您可以使用 % 替换来传递给 .cmd 的参数

@echo off
pushd %~dp0
REM %* forwards all parameters
java -jar dist/Election_real.jar %*
pause

然后拨打yourcmd.cmd 5 6 7 8

如果你想询问这些参数,你会去

@echo off
pushd %~dp0
set /p nr1=Enter Nr1:
set /p nr2=Enter Nr2:
set /p nr3=Enter Nr3:
set /p nr4=Enter Nr4: 
java -jar dist/Election_real.jar %nr1% %nr2% %nr3% %nr4%
pause

【讨论】:

  • 好的,所以我添加了 %* 并且它没有等待我输入参数。基本上在我的 Java 项目中,如果有一个 if 语句表明 String[] args =0 的长度,那么它将使用默认参数运行项目。因此,一旦我运行我的 .bat 文件,即使使用 java -jar dist/Election_real.jar %* 它也只是使用默认参数立即运行我的项目,而不是等待我输入我的自定义参数
  • 那我完全误解了你的要求——你用 %* 将参数传递从 .cmd 到 java。如果您希望您的 .cmd 要求这些...然后设置 /P 是要走的路。我会编辑。
  • 太棒了,谢谢!有效!最后一件事,只是我很挑剔,但现在我的用户输入例如看起来像这样:5、4(在下一行)、2(在下一行)、7(在下一行)......我怎么能使所有 4 个输入都输入一行,例如 4 5 6 7
  • 消除回声,输入所有 4 5 6 7 作为 nr1 并查看结果。由于 %nr1% 没有被转义为 " 它可能会将 7 个 args 传递到你的 main 然后......
  • 你很清楚所有这些都可以在你的 main () 中完成
猜你喜欢
  • 1970-01-01
  • 2018-07-16
  • 1970-01-01
  • 2020-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
相关资源
最近更新 更多