Batch file 将输出放入变量
我试图创建一个批处理文件,将JAVA_设置为主页 现在我有下面的代码来查找路径是否存在。 如果是这种情况,我希望将完整名称存储在变量中Batch file 将输出放入变量,batch-file,cmd,Batch File,Cmd,我试图创建一个批处理文件,将JAVA_设置为主页 现在我有下面的代码来查找路径是否存在。 如果是这种情况,我希望将完整名称存储在变量中 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:\Pr
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:\ProgramFiles(x86)\Java\jre1.8.0\u 40)
我还尝试:
dir "C:\Program Files (x86)\Java\jre1.8*" /s/b > javaLoc
但这也不起作用谁能帮我弄清楚我做错了什么 我看到你是带着来自bash(或者可能是kornshell)的经验进来的。遗憾的是,批处理比它的*nix对应项有一点限制,所以不能直接将命令的输出存储在变量中 但是,您可以通过for/F循环运行命令,并以这种方式将结果存储在变量中,如下所示:
for /F %%A in ('dir "C:\Program Files (x86)\Java\jre1.8*" /s /b') do (
set javaLoc=%%A
)
尽管需要注意的是,如果此命令返回了多个项目,javaLoc将被设置为列表中的最后一个项目。您可以使用
FOR
语句来实现这一点,您可以将javaLoc
作为迭代变量。在命令行提示符下键入以获取/?
,查看选项列表。这对我很有用。我确实为空格添加了一个“delims=”。