我正在尝试通过Windows 8中的批处理脚本运行带有参数的.jar文件。
我的批处理文件(run.bat)具有以下内容:
set d=2015-07-07
java -jar my.jar %d%
但是当我执行run.bat时,我得到以下内容:
C:\Users\user\Desktop\Test>run.bat
C:\Users\user\Desktop\Test>set d=2015-07-07
C:\Users\user\Desktop\Test>java -jar my.jar
C:\Users\user\Desktop\Test>2015-07-07
'2015-07-07' is not recognized as an internal or external command,
operable program or batch file.
如何与参数一起执行整个命令?
当我通过命令行运行没有批处理脚本时,它可以工作:
C:\Users\user\Desktop\Test>java -jar my.jar 2015-07-07
C:\Users\user\Desktop\Test>
我在批处理脚本中做错了什么?
答案 0 :(得分:0)
使用批次代码
@echo off
set "DateOption=2015-07-07"
java.exe -jar my.jar %DateOption%
set "DateOption="
或者甚至更好
@echo off
set "DateOption=2015-07-07"
"%JAVA_HOME%\bin\java.exe" -jar my.jar %DateOption%
set "DateOption="
根据运行批处理文件时 cmd.exe 输出的命令,看起来第二行中my.jar
和%d%
之间或{=
之间有一个字符第一行中的1}}和2015-07-07
被 cmd.exe 解释为换行符。它可以是单个回车或单个换行。并且NULL(字节值为0)被 cmd.exe 解释为字符串的结尾,这也意味着行尾。
批处理文件应具有DOS / Windows行终止符,即回车符+换行符。仅限换行(UNIX)或仅回车(旧MAC)不适合批处理文件。
批处理文件必须是ASCII / ANSI(OEM)编码文件,即每个字符1个字节。使用命令另存为确保在使用的文本编辑器中未选择UTF-8或Unicode(UTF-16 Little / Big Endian)来保存批处理文件。默认情况下,许多文本编辑器现在使用UTF-8作为 cmd.exe 不支持的编码。