中易网

bat命令语法不正确

答案:2  悬赏:80  
解决时间 2021-02-16 15:43
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,希望大神帮我看一下哪里语法不正确



最佳答案
@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
全部回答
语法没有错,确实很诡异!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
薄荷总是生虫子怎么办?怎样除虫,最好是家里
品鹅坊火锅地址有知道的么?有点事想过去
河虾怎么做好吃?放什么配料?.......急急急
秀媛堂美容美体怎么去啊,有知道地址的么
GTX780刷哪个BIOS好?
房产网签是什么和抵押有什么区别
星海美佳地址有知道的么?有点事想过去
昆明万水千山广告有限公司我想知道这个在什么
比亚迪宋手动豪华版可以加装胎压监测么
女儿过生日,薛城哪家蛋糕做的好吃啊????
常熟市新丰包装材料厂地址在哪,我要去那里办
网页设计中站点的名为什么要用英文名?
CAD 2011无法默认保存为 低版本的
青西大宗商品交易中心是否正规
我拿你当回事的时候,你说什么就是什么
推荐资讯
小学一年级作业,生活中的数字有哪些
曼悦海温泉度假酒店地址有知道的么?有点事想
QQ三国八阵图-休门在哪里
婚内出轨,还生了孩子,我该怎么办
事件运算中,并U和交n的运算有没有先后顺
关于,晨训感悟写一篇作文?
324÷12=27的竖式
农村瓦房上放瓦片的叫什么?
银行考察贷款能力时看月收入,是税前还是税后
鹏宇通讯店这个地址在什么地方,我要处理点事
车辆追尾之后,先私了,后又发现肩膀骨裂.三天
河南省对口升学的大专都有什么?计算机专业的
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?