下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