for-loop - 无法在for循环中的子句中执行exe

我在名为find_java.bat的批处理文件中拥有此文件:

@echo off
for /f "delims=" %%a in ('C:\Programming\Android\android-sdk\tools\lib\find_java.exe') do (set java_exe=%%a)

问题是,当我运行此批处理文件时,我得到:
'C:\Programming\Android\android-sdk\tools\lib\find_java.exe' is not recognized as an internal or external command, operable program or batch file.

但是,当批处理文件仅包含:
@echo off
C:\Programming\Android\android-sdk\tools\lib\find_java.exe

它执行命令就好了。

我刚开始编写批处理文件,但是在网上查看示例应该可以...

编辑:
很抱歉再次访问此内容。


我找到了解决方案。它与ComSpec有关,原因我仍然不太了解。我的ComSpec是
%SystemRoot%\system32\cmd.exe;

我进入注册表并进行了更改
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\ComSpec


%SystemRoot%\system32\cmd.exe;


C:\Windows\system32\cmd.exe

然后注销并重新登录,神奇地成功了。 %SystemRoot%是C:\ Windows,所有其他系统变量都使用它,并且
@echo off
for /f "delims=" %%a in ('"C:\Programming\Android\android-sdk\tools\lib\find_java.exe"') do (set java_exe=%%a)

效果很好,所以说实话我不理解,但是看到Command Line FOR /F Fails可能比我更有意义。

最佳答案

通常,这些问题可以通过将命令括在双引号中来解决。

@echo off
for /f "delims=" %%a in ('"C:\Programming\Android\android-sdk\tools\lib\find_java.exe"') do (set java_exe=%%a)

但是我在您的命令中看不到任何需要加引号的内容。

我不知道为什么它不起作用,但是FOR / F语句正在尝试在新的CMD shell中执行命令。

尝试运行以下批处理,并查看其是否运行命令“确定”。这是FOR语句实际尝试运行的命令:
@echo off
%comspec% /c C:\Programming\Android\android-sdk\tools\lib\find_java.exe

如果运行正常,那么我完全感到困惑。如果失败,则找出原因还应有助于诊断FOR / F命令失败的原因。

https://stackoverflow.com/questions/11147057/

相关文章:

scala - 斯卡拉调度以编程方式登录网站

antlr - 记住 AST 中的 ANTLR 规则/节点

jquery-mobile - 是否可以在 jquery mobile 的搜索输入旁边有一个按钮?

asp.net-mvc-3 - 在 asp.net mvc 3 razor View 中使用 oth

jquery-mobile - jQuery mobile和Facebook登录

linq-to-sql - Windows 8的Metro风格应用程序中是否可以使用LINQ-to-

scala - 如何转换 Play ! 2.0 Scala文件转换为CSVReader格式?

tridion - 如何在Tridion DWT模板中迭代这些嵌入的值

.net - 清理代码并进行重构。额外的局部变量

network-programming - 将邮件卡在ZeroMQ中