bat批处理脚本如何获取fastboot命令结果
大家好,
小弟遇到一个问题需要大家帮忙一下。
就是现在在做安卓手机fastboot自动化脚本时,发现有一些fastboot命令bat获取不到返回结果。
比如同样的结果解析语句:
FOR /F %%i IN ('fastboot devices') DO @echo get result %%i
是可以获取到结果的:
C:\test>test.bat
get result N2SR0xxxxx
finished. total time: 0.001s
可以看到,指令结果可以获取并解析:“get result xxxxxx”
但是把fastboot命令修改为其他的,如getvar kernel,bat就获取不到结果了,命令执行的返回值直接被输出到了console中:
FOR /F %%i IN ('fastboot getvar kernel') DO @echo get result %%i
执行结果
C:\test>test.bat
kernel: uefi
finished. total time: 0.001s
可以看到,bat没有获取到这条指令的执行结果,并没有打印出“get result xxxx”,反而结果被直接输出到了cmd上。
通过添加输出流的控制,进一步发现getvar kernel的结果并不在stdout中,反而在stderr:
fastboot getvar kernel 1>con 2>con
输出结果是:
C:\test>test.bat
kernel: uefi
finished. total time: 0.000s
而fastboot getvar kernel 1>con 2>nul
输出结果是:
C:\test>test.bat
finished. total time: 0.000s
可以看到2控制了结果的输出。
但是如果想把结果输出到文件中,2>result.txt却获取不到任何东西
fastboot getvar kernel 1>con 2>result.txt
结果
C:\test>test.bat
finished. total time: 0.000s
result.txt为空。
同时又尝试了fastboot devices,是可以输出到result.txt的
fastboot getvar kernel 1>result.txt 2>nul
C:\test>test.bat
finished. total time: 0.000s
result.tx内容:
N2SR0xxxxx fastboot
所以综上,感觉fastboot getvar这类指令是从手机输出给PC的,是不是影响了bat的输出流方向,进而导致bat无法获取指令的结果?
所以想咨询一下各位高手,能否在bat中获取到这类指令的返回结果
感谢感谢!