下IF条件从你的批处理代码是区分大小写字符串比较。
if "%%x"=="Project.Name"
因此,如果该文件包含例如Project.name
字符串比较从不是真实的。
这几乎是不可能的,以帮助你在不知道文件project.properties
的内容,但我认为你需要类似的东西:
@echo off
for /F "usebackq tokens=1* delims== " %%x in ("%TEMP%\project.properties") do (
if /I "%%x"=="Project.Name" set "%%x=%%y" & goto FoundProjectName
)
echo Could not find Project.Name in file project.properties.
goto :EOF
:FoundProjectName
echo Project_Name=%Project.Name%
我会很惊讶,如果环境变量TEMP
不包含的文件夹路径至少需要1个指定文件名的路径,用双引号指定文件名,这需要指定usebackq
来处理文件中的行,而不是将文件名解释为带有空格的路径作为要处理的字符串。这当然可能是循环后没有定义环境变量Project.Name
的另一个原因。
为了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。
echo /?
for /?
goto /?
if /?
set /?
的紫外线很好的解析代码(几乎)的作品。 –
你的'project.properties'文件中的变量周围是否有任何空格,所以像'Project.Name = some_project'或_space_ +'Project.Name = some_project'这样的东西? – aschipfl