使用命令行将Batch变量作为参数传递给Java类

时间:2018-10-07 16:58:29

标签: java batch-file command-line

如何使用命令行将批处理变量作为参数传递给Java类main方法?我想使用命令行将文本文件的内容作为参数传递给Java类。例如:me = int(text[0]) + 100

我尝试了以下代码,但似乎不起作用:

Java -jar TestJar.jar %BATCH_VAR%

1 个答案:

答案 0 :(得分:1)

我怀疑您可能对变量中存储的值有误解。因此,让我澄清一下批处理文件中正在发生的事情。

set keyvalue=^&Type TestDoc.txt
echo %keyvalue%  /// This is printing the right value.

这是 not 打印正确的值。您已完成的工作将为变量分配值&Type TestDoc.txt。然后,您输入echo %keyvalue%时,此行将扩展为以下行:

echo &Type TestDoc.txt

这实际上是两个单独的命令。第一个echo仅查询回声设置当前是打开还是关闭。然后执行第二个命令Type TestDoc.txt

变量keyvalue永远不会包含文件的内容。

因此,当您的批次中有此行时:

java -jar ErrorUpdate.jar "%keyvalue%"

它扩展为:

java -jar ErrorUpdate.jar "&Type TestDoc.txt"

这次,&用引号引起来,因此它不用作语句分隔符,而是传递给Java类的main方法。您的主要方法只是看到字符串"&Type TestDoc.txt"作为args[0]传入。

如果您希望Java应用程序接收文件的全部内容,则需要使Java应用程序读取其内容本身。