【发布时间】:2020-12-14 16:03:32
【问题描述】:
我想编写一个批处理文件,它会自动将输入提供给提示用户输入的 java 程序。
到目前为止,我的代码如下:
set path=C:\Program Files\Java\jdk-13.0.2\bin
javac *.java
java myJavaProgram
问题是当 myJavaProgram 执行时它会提示用户输入,所以批处理文件等待我提供输入以便继续执行。我希望能够使用 .bat 自动传递输入。这可能吗?感谢您的帮助!
编辑:更新问题以包含更多上下文。
更详细地说,当从批处理文件执行myJavaProgram 时,它会提示用户从控制台输入并等待它。我必须给一个字符串。当我写字符串时,myJavaProgram 用扫描仪读取它并用它做一些事情(它做了什么并不重要)。然后它终止。我想更改批处理代码,以便在提示输入字符串时不需要编写字符串。我想在批处理文件中使用我的输入字符串设置一个变量,并将其作为输入提供给myJavaProgram“绕过”控制台。
【问题讨论】:
-
一般来说: 1) 将参数传递给程序,例如批处理文件的路径。 2)给定参数的存在,使用参数来获取输入。例如,如果程序使用
Scanner,则创建Scanner以从参数表示的文件中读取(而不是从 System.In 中读取)。 -
请不要使用那种语法,
set path=location。它的作用是从用户环境变量%Path%和系统环境变量%Path%的变量值中删除每条字符串数据。然后它暂时将其全部替换为C:\Program Files\Java\jdk-13.0.2\bin,(在我看来,无论如何应该是C:\Program Files\Java\jdk-13.0.2\bin;)。这样做可能会更好,If "%Path:~-1%" == ";" (Set "Path=%Path%%ProgramFiles%\Java\jdk-13.0.2\bin;") Else Set "Path=%Path%;%ProgramFiles%\Java\jdk-13.0.2\bin;" -
另外,
javac在技术上不是正确的命令,因为它依赖于另一个变量。%PATHEXT%,未修改。%PATHEXT%下的值数据是可执行扩展名的列表,依次添加这些扩展名,直到在当前目录中找到匹配的文件,如果未找到,则在%Path%中的每个文件匹配。为什么不避免该过程发生,并自己提供扩展。javac.exe *.java。还请注意,您还应该使用java.exe myClass用于类文件(无.class扩展名),或使用java.exe -jar myJar.jar来运行 jar 文件。 -
@Compo 谢谢你的回答。你是对的,但这不是我要在这里解决的问题。不过我会使用你的建议。
标签: java batch-file