2014-10-10 223 views
0

我正在写一个Java程序,并将在DOS批处理脚本中调用它....(它是一个基于Swing的GUI应用程序)我希望从调用DOS脚本中的Java程序获得输出。我打算通过使用命令行参数进行获取此信息 - 就像Java - 从程序中获取输出...命令行参数?

(在DOS脚本)

的Java MYPROG VAR

如果(VAR%==% “的loggedIn”) {

}

var应该用myProg的输出填充。 Java程序myProg应该设置值args [0](在var中),我假设当控制回到DOS脚本时这会被记住。 这可能吗? 如果不是我怎么能达到我的用例?我有什么选择? 我怎样才能从myProg传递一个标志(如“已登录”)到调用DOS批处理脚本?

回答

0

编辑:尝试使用DOS命令 “管”:

Command1 | Command2 

的输出(例如:的System.out.println())的Command将命令2 的输入参数的COMMAND1是命令它运行java应用程序 Command2是将参数处理为%1的批处理文件,%2

+0

这不是一个问题,在我的Java程序和脚本中,我可以有一个睡眠命令,可以等待var中的值填充(它的值在var中根本不会填充) – user4127664 2014-10-10 02:28:16

+0

这应该可以工作.. ..谢谢...让我试试 – user4127664 2014-10-10 02:46:35

+0

管道工作。谢谢 – user4127664 2014-10-10 06:40:14

0

命令行参数不能修改;他们是文字。你唯一能做的就是将文本输出到stdout或者stderr(如yelliver建议的那样),设置一个环境变量,写入某种类型的日志文件,或者返回一个退出代码。

+0

...退出代码.. 这为我做了诡计。谢谢。 我只想将一个标志(指示符)传递给调用批处理脚本,所以这起作用 – user4127664 2014-10-10 03:25:11

+0

我需要这个标志在Java程序运行时传递出去(到DOS脚本),因此不用退出代码,管道|证明了我的合适选择。 我在myProg中有一个System.out.print(“mystring”)语句 then java myProg |找到“mystring” echo“errorlevel” echo指示是否在输出中找到该字符串。 谢谢大家 – user4127664 2014-10-10 06:36:30

0

为“从MYPROG输出填充VAR”的方式是这样的(在DOS脚本):

for /F "delims=" %%a in ('java myProg') do set "var=%%a" 

注意,Java程序必须“输出”你想要的值分配给无功,也就是说,它必须在屏幕上显示该值(通过Stdout)。