Batch file 带有配置文件(键值对)的批处理文件引发错误

Batch file 带有配置文件(键值对)的批处理文件引发错误,batch-file,Batch File,我试图使用一个配置文件来设置批处理脚本将使用的一些变量 因此,配置文件如下所示: CUSTOM_JAVA_HOME="C:/.../Desktop/jre1.8.0_171" JAVA_FLAGS="-server -Xmx2048M" 在批处理文件中,我有以下内容: rem load config if exist cmd.config for /f "delims=" %%A IN (cmd.config) DO (SET "%%A") 当我运行它时,会出现以下错误: ““””无法识别为

我试图使用一个配置文件来设置批处理脚本将使用的一些变量

因此,配置文件如下所示:

CUSTOM_JAVA_HOME="C:/.../Desktop/jre1.8.0_171"
JAVA_FLAGS="-server -Xmx2048M"
在批处理文件中,我有以下内容:

rem load config
if exist cmd.config for /f "delims=" %%A IN (cmd.config) DO (SET "%%A")
当我运行它时,会出现以下错误:

““””无法识别为内部或外部命令、可操作程序或批处理文件


仔细看一看,变量
JAVA\u FLAGS
已设置。我不知道失败的地方是什么。

我的最佳实践一直是不将周围的引号分配给变量。本质上这就是你犯错误的原因。您为变量指定了引号,然后用引号包围了这些变量的使用。因此,它最终将变量视为
“C:/…/Desktop/jre1.8.0_171”“
。使用现有代码,您只需删除
%%A
周围的引号,但我的最佳实践始终是不将引号分配给变量,而是在需要时与另一个命令一起使用它们

配置

CUSTOM_JAVA_HOME=C:/.../Desktop/jre1.8.0_171
JAVA_FLAGS=-server -Xmx2048M
批处理


只需使用
设置%%A
@Squashman sweet!谢谢您应该添加它作为答案:)在
CUSTOM\u JAVA\u HOME
中给出的确切路径是什么?它是否包含特殊字符,例如
&
?举个例子,我可能会选择
如果存在的话为/F“UseBackQ Tokens=1*Delims=”%%A IN(“cmd.config”)设置“%%A=%%~B”
。我得到了引号,但是,我需要配置以与shell(linux)兼容,所以我需要引号之间的变量值(然后用
在我的sh脚本中“导入”配置)。我回顾了几年前编写的一些bash脚本,没有为变量的值指定引号,我没有遇到任何问题。实际上,在变量值中出现空格问题后,我添加了它们。就像在flahs变量中一样。@FedeE。正如我在前面的评论中所说,当需要使用引号时,可以使用另一个命令来保护空格和特殊字符。
rem load config
if exist cmd.config for /f "eol=# delims=" %%A IN (cmd.config) DO (SET "%%A")