运行 带有批处理脚本参数的 jar 文件 windows 8

Running jar file with argument from batch script windows 8

我正在尝试 运行 我的 .jar 文件通过批处理脚本在 Windows 8.

中使用参数

我的批处理文件(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>

我在批处理脚本中做错了什么?

使用批号

@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% 在第二行或在 =2015-07-07 之间在第一行被 cmd.exe 解释为换行。它可以是单个回车 return 或单个换行符。 cmd.exe 将 NULL(值为 0 的字节)解释为字符串的结尾,这也意味着行的结尾。

批处理文件应该有 DOS/Windows 行终止符,即回车符 return + 换行符。仅换行 (UNIX) 或仅回车 return(旧 MAC)不适用于批处理文件。

并且批处理文件必须是 ASCII/ANSI (OEM) 编码文件,即每个字符 1 个字节。确保在使用命令 另存为 保存批处理文件时没有在使用的文本编辑器中选择 UTF-8 或 Unicode (UTF-16 Little/Big Endian)。现在许多文本编辑器默认使用 UTF-8 作为 cmd.exe 不支持的编码。