将输出放入变量中

时间:2015-04-20 08:49:48

标签: batch-file cmd

我正在尝试创建一个设置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

但这也不起作用。
任何人都可以帮我解决我做错的事吗?

1 个答案:

答案 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将设置为列表中的最后一项。