我正在尝试创建一个设置JAVA_HOME的批处理文件。
现在我有以下代码来查找是否存在路径。 如果是这种情况,我想将完整的名称存储在变量中。
set javaLoc=
set javaLoc=$(dir "C:\Program Files (x86)\Java\jre1.8*" /s/b)
echo %javaLoc%
但回声让我回答:
$(dir "C:\Program Files (x86)\Java\jre1.8*" /s/b)
虽然我想在" javaLoc"中从中捕获输出(C:\ Program Files(x86)\ Java \ jre1.8.0_40)。
我也尝试过:
dir "C:\Program Files (x86)\Java\jre1.8*" /s/b > javaLoc
但这也不起作用。
任何人都可以帮我解决我做错的事吗?
答案 0 :(得分:1)
我看到你有来自bash(或可能是kornshell)的经验。遗憾的是,批处理比它的* nix对应有限,所以你不能直接将命令的输出存储在变量中。
可以,但是,通过for /F
循环运行命令并将结果存储在变量中,如下所示:
for /F %%A in ('dir "C:\Program Files (x86)\Java\jre1.8*" /s /b') do (
set javaLoc=%%A
)
虽然应该注意,如果此命令返回的项目不止一个,则javaLoc将设置为列表中的最后一项。