【发布时间】:2018-05-31 11:03:04
【问题描述】:
我正在尝试获取 JavaHome 注册表项的路径,到目前为止我有这个:
for /f "skip=2 tokens=3" %%x in ('reg query "HKLM\SOFTWARE\JavaSoft\%~1" /v CurrentVersion') do set JavaTemp=%%x
for /f "skip=2 tokens=3*" %%a in ('reg query "HKLM\SOFTWARE\JavaSoft\%~1\%JavaTemp%" /v JavaHome') do set JAVA_HOME=%%a %%b
echo %JAVA_HOME%
注意:%1 可以是“JRE”或“JDK”
参考:http://www.rgagnon.com/javadetails/java-0642.html
但是,这只会让路径的前两部分 (%%a %%b) 被空格分割。如果路径中有多个空格,则无法输出整个路径。
我对 Batch 中的 for 循环不太熟悉,所以我的问题是:我怎样才能找到找到的所有标记? (无需执行 %%a %%b ... %%z) 我可以使用嵌套的 for 循环吗?
我最初的想法是我可以做到
set JAVA_HOME=%%*
但这不起作用。
【问题讨论】:
标签: batch-file for-loop registry string-parsing