批处理脚本:goto是意外的。使用find xyz file.log&&转到||转到失败

时间:2012-07-06 11:00:45

标签: batch-file adb goto

我的批处理脚本有一个非常奇怪的错误。 虽然代码使用的是Android Debugging Bridge,但我确定这是与cmd相关的错误而不是adb。 所以,基本上如果有人关心,脚本只会检查root访问权限。这是代码的一小部分:

@echo off
adb kill-server
adb start-server
adb shell "su" >check.log 2>&1
adb kill-server
"%windir%\system32\find.exe" "#" check.log && goto pass || goto fail
:fail
echo No root access!
pause
:pass
echo Root access detected!
pause

这个输出是:

* daemon not running. starting it now on port XXXX *
* daemon started successfully *
* server not running *
---------- CHECK.LOG
goto was unexpected at this time

窗口自动关闭。

如果我通过手动输入命令在命令窗口中运行它,这就是我得到的:

J:\tools>adb kill-server

J:\tools>adb start-server
* daemon not running. starting it now on port XXXX *
* daemon started successfully *

J:\tools>adb shell su >check.log 2>&1

J:\tools>"%windir%\system32\find.exe" "#" check.log && echo pass || echo fail

---------- CHECK.LOG
fail

有人能想到解决方案吗?我试着这样做:

@echo off
adb kill-server
adb start-server
adb shell "su" >check.log 2>&1
adb kill-server
SET tr=0
"%windir%\system32\find.exe" "#" check.log >nul && SET tr=1 || SET tr=0
if "%tr%"=="1" goto pass
if "%tr%"=="0" goto fail

我仍然得到goto的错误。 :/ 我很困惑,我之前使用过其他类似的陈述。 感谢阅读! :)

哦,系统32有时不存在于路径和路径中。因为这是供其他人使用的,我需要使用%windir%\ system32 \

1 个答案:

答案 0 :(得分:0)

我运行了你的find行,它对我来说很好。尝试使用%errorlevel%作为解决方法,这在我的电脑上也能正常工作

find "#" check.log
if %errorlevel%==0 goto pass
if %errorlevel%==1 goto fail

注意:您无需指定find的完整路径,因为system32变量中的PATH

希望这有帮助!