for /f "delims=" %%a in ('"%~dps0\find_java%arch_ext%.exe" -s') do set java_exe=%%a
if not defined java_exe goto :CheckFailed
这是在bat文件中的部分代码
这是运行到这里显示语法不正确
我没学过bat,希望大神帮我看一下哪里语法不正确
bat命令语法不正确
答案:2 悬赏:80
解决时间 2021-02-16 15:43
- 提问者网友:践踏俘获
- 2021-02-16 10:29
最佳答案
- 二级知识专家网友:星痕之殇
- 2021-02-16 10:42
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "delims=" %%a in ('"%~dps0find_java%arch_ext%.exe" -s') do (
set java_exe=%%a
if not defined java_exe goto :CheckFailed
)
补充:
1. %~dps0 改为 %~dp0 看看,不使用短路径。dps0后可以不需要接 \ ,输出的路径已经带 \
2. 检查你 in 内的命令文件是否存在,语法是否正确。是否支持 -s 这个参数,这极有可能是你命令语法不正确的主因。
3. 不知道是你 in 内的命令输出的结果是只有一行,还是需要在 do 后,循环执行 set 变量和判断,如果需要循环执行,需要开启变量延迟
4. 在 for 内 set 变量,需要在 for 之前开启变量延迟,命令为
SETLOCAL ENABLEDELAYEDEXPANSION否则在 for 的时候,变量的新值只有在 for 结束时才生效,而在此期间,都会使用之前的值。需要开启变量延迟的情况一般为:使用到 ( ) 括起的、& 或 && 连接的复合语句
当使用 if、for 时,其结束的命令是允许省略 ( ) ,但是如果需要 set 变量,还是需要开启变量延迟。
在开启变量延迟后,符合语句内的 % 需要改为 ! ,前者为变量延迟前使用,后者为变量延迟后使用。 if not defined 时本身不需要加 % ,所以也无需加 !
最后,上一段以 if 为例的变量延迟例子
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
if 1==1 (
set a=aa
if not defined a (
echo %a%
echo !a!
goto :Check
) else (
echo %a%
echo !a!
goto :yes
)
)
pause
:check
echo 变量没赋值
pause
:yes
echo 变量已赋值
pause
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "delims=" %%a in ('"%~dps0find_java%arch_ext%.exe" -s') do (
set java_exe=%%a
if not defined java_exe goto :CheckFailed
)
补充:
1. %~dps0 改为 %~dp0 看看,不使用短路径。dps0后可以不需要接 \ ,输出的路径已经带 \
2. 检查你 in 内的命令文件是否存在,语法是否正确。是否支持 -s 这个参数,这极有可能是你命令语法不正确的主因。
3. 不知道是你 in 内的命令输出的结果是只有一行,还是需要在 do 后,循环执行 set 变量和判断,如果需要循环执行,需要开启变量延迟
4. 在 for 内 set 变量,需要在 for 之前开启变量延迟,命令为
SETLOCAL ENABLEDELAYEDEXPANSION否则在 for 的时候,变量的新值只有在 for 结束时才生效,而在此期间,都会使用之前的值。需要开启变量延迟的情况一般为:使用到 ( ) 括起的、& 或 && 连接的复合语句
当使用 if、for 时,其结束的命令是允许省略 ( ) ,但是如果需要 set 变量,还是需要开启变量延迟。
在开启变量延迟后,符合语句内的 % 需要改为 ! ,前者为变量延迟前使用,后者为变量延迟后使用。 if not defined 时本身不需要加 % ,所以也无需加 !
最后,上一段以 if 为例的变量延迟例子
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
if 1==1 (
set a=aa
if not defined a (
echo %a%
echo !a!
goto :Check
) else (
echo %a%
echo !a!
goto :yes
)
)
pause
:check
echo 变量没赋值
pause
:yes
echo 变量已赋值
pause
全部回答
- 1楼网友:余生继续浪
- 2021-02-16 12:06
语法没有错,确实很诡异!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯