Batch file 变量表达式%Var%在批处理文件的for循环中不起作用 FOR/F“tokens=*USEBACKQ”%F IN(java-jar%MAVEN\u HOME%\jenkins-cli.jar-shttp://someip.com build/dev/-s--username****--password***)DO(SET var=%F)

Batch file 变量表达式%Var%在批处理文件的for循环中不起作用 FOR/F“tokens=*USEBACKQ”%F IN(java-jar%MAVEN\u HOME%\jenkins-cli.jar-shttp://someip.com build/dev/-s--username****--password***)DO(SET var=%F),batch-file,for-loop,cmd,variable-expansion,Batch File,For Loop,Cmd,Variable Expansion,这里的%MAVEN_HOME%值没有被实际值替换,但是当我在没有for循环的情况下运行它时,它工作正常 一些人能解决这个问题并用实际值替换MAVEN\u HOME吗?你需要像这样把命令放到`中 FOR/F“tokens=*USEBACKQ”%F IN(`java-jar%MAVEN\u HOME%\jenkins-cli.jar-shttp://someip.com build/dev/-s--username****--password***`)DO(SET var=%F) 因为语法是 C:

这里的
%MAVEN_HOME%
值没有被实际值替换,但是当我在没有
for
循环的情况下运行它时,它工作正常


一些人能解决这个问题并用实际值替换
MAVEN\u HOME
吗?

你需要像这样把命令放到
`

FOR/F“tokens=*USEBACKQ”%F IN(`java-jar%MAVEN\u HOME%\jenkins-cli.jar-shttp://someip.com build/dev/-s--username****--password***`)DO(SET var=%F)
因为语法是

C:\>for/?
为一组文件中的每个文件运行指定命令。
对于(设置)DO命令[命令参数]中的%变量
%变量指定单个字母可替换的参数。
(set)指定一组或多个文件。可以使用通配符。
命令指定要对每个文件执行的命令。
命令参数
指定指定命令的参数或开关。
要在批处理程序中使用FOR命令,请改为指定%%variable
%的变量。变量名区分大小写,因此%i不同
从%I开始。
...
对于(文件集)DO命令[命令参数]中的/F[“选项”]%变量
对于/F[“选项”]%变量(“字符串”)DO命令[命令参数]
对于('command')DO命令[命令参数]中的/F[“选项”]%变量
或者,如果存在usebackq选项:
对于(文件集)DO命令[命令参数]中的/F[“选项”]%变量
对于('string')DO命令[命令参数]中的/F[“选项”]%变量
对于(`command`)DO命令[命令参数]中的/F[“options”]%变量

如您所见,您有
USEBACKQ
,因此该命令必须被backticks包围,并且它还说,如果您想在批处理文件中使用
for
命令,您必须将百分比加倍

Hey@phuclv,这种方式对我也没有帮助。问题是在使用引号后,此命令行为不正常。即使它正在从命令中删除一些单词。请尝试执行此命令command@arjun,如果您是从批处理文件运行命令,您应该这样做,因为您已经为它添加了标记,您还需要将元变量的百分比字符加倍,
%F
变成
%F
@arjunkumarmehta如果您运行
for/?
您将看到“要在批处理程序中使用for命令,请指定
%%variable
而不是
%variable
”。嘿,谢谢大家,它终于起作用了。包括“”是正确答案。如果这是在.bat文件脚本中,则必须将
F
变量上的
%
字符加倍。使用
%%F
。另外,将java命令放在撇号中。如果要将命令放在backticks(GRAVE ACCENT)中,则必须指定
“usebackq tokens=*”