【问题标题】: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 应用程序自己读取内容。