【问题标题】:Pass Batch variable as parameter to Java class using command line [duplicate]使用命令行将批处理变量作为参数传递给Java类[重复]
【发布时间】:2018-10-08 02:44:29
【问题描述】:

我们如何使用命令行将批处理变量作为参数传递给 Java 类主方法?我想使用命令行将文本文件的内容作为参数传递给 Java 类。例如:Java -jar TestJar.jar %BATCH_VAR%

我已经尝试了下面的代码,但它似乎不起作用:

echo "starting"

echo off

set keyvalue=^&Type TestDoc.txt

echo %keyvalue%  /// This is printing the right value.

pause

java -jar ErrorUpdate.jar "%keyvalue%" //// This does not pass anything to the Java class :(

pause

【问题讨论】:

  • 你怎么知道它不起作用?

标签: java batch-file command-line


【解决方案1】:

我怀疑您可能对变量中存储的值有误解。所以让我澄清一下你的批处理文件中发生了什么。

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

不是打印正确的值。您所做的是将值 &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 方法。您的 main 方法只看到作为 args[0] 传入的字符串 "&Type TestDoc.txt"

如果你想让 java 应用程序接收文件的全部内容,你需要让你的 java 应用程序自己读取内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-28
    • 2017-08-13
    • 1970-01-01
    • 2021-01-03
    • 2016-05-31
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    相关资源
    最近更新 更多