So, I'm making a little batch script to be able to automate the whole process of flashing new roms for my Galaxy S6. Since its screen is broke, I have to do everithing manually from the adb shell, and since i'm having so many troubles with all the roms, I decided to make a little script to make my life easier.
This is what I got so far:
@echo off
setlocal enabledelayedexpansion
REM Factory settings
echo Formatting to Factory Defaults
adb reboot recovery
adb wait-for-usb-recovery
adb shell twrp wipe cache
adb shell twrp wipe dalvik
adb shell twrp wipe data
adb shell umount /sdcard
adb shell umount /sdcard
adb shell umount /data
adb shell umount /data
adb shell mke2fs -t ext4 /dev/block/platform/15570000.ufs/by-name/USERDATA
adb shell reboot recovery
adb wait-for-usb-recovery
REM Rom Flashing Section
set argCount=0
for %%x in (%*) do (
set /A argCount+=1
set "argVec[!argCount!]=%%~x"
)
echo Wiping /system
adb shell twrp wipe /system
for /L %%i in (1,1,%argCount%) do (
adb wait-for-usb-recovery
echo Flashing "!argVec[%%i]!"
adb shell twrp sideload
adb wait-for-usb-sideload
adb sideload "!argVec[%%i]!"
echo "!argVec[%%i]!" flashed
echo.
)
REM Debug enable
adb wait-for-usb-recovery
echo Enabling USB Debugging
adb shell mount system
adb shell "echo '' >> /system/system/build.prop"
adb shell "echo '# Enable ADB' >> /system/system/build.prop"
adb shell "echo 'persist.service.adb.enable=1' >> /system/system/build.prop"
adb shell "echo 'persist.service.debuggable=1' >> /system/system/build.prop"
adb shell "echo 'persist.sys.usb.config=mtp,adb' >> /system/system/build.prop"
adb push C:\Users\ffpp2\.android\adbkey.pub /data/misc/adb/adb_keys
REM Booting system
echo Rebooting into system...
adb shell reboot
echo waiting for phone to boot up
adb wait-for-usb-device
echo Launch scrcpy
"D:\Users\ffpp2\Documents\Celus\zeroflte\scrcpy-win64-v1.25\scrcpy.exe"
Now, I want to be able to evaluate every adb shell ...
return code, so if anything happens mid way I can stop execution and I can get to fix what didn't work.
I havent been able to find anything regarding if adb shell forwards error codes back to the windows command prompt. Take a look at this:
D:\Users\ffpp2\Documents\Celus\zeroflte>adb shell mount /system
mount: mounting /dev/block/sda15 on /system failed: Device or resource busy
D:\Users\ffpp2\Documents\Celus\zeroflte>echo %errorlevel%
0
D:\Users\ffpp2\Documents\Celus\zeroflte>adb shell
~ # mount /system
mount: mounting /dev/block/sda15 on /system failed: Device or resource busy
~ # echo $?
255
~ # exit
D:\Users\ffpp2\Documents\Celus\zeroflte>adb shell cat asd
cat: can't open 'asd': No such file or directory
D:\Users\ffpp2\Documents\Celus\zeroflte>echo %errorlevel%
0
D:\Users\ffpp2\Documents\Celus\zeroflte>adb shell
~ # cat asd
cat: can't open 'asd': No such file or directory
~ # echo $?
1
~ #
As you can see, no error code was returned. And, in theory, it should be returned, since I didnt used the -x
argument:
Android Debug Bridge version 1.0.41
Version 34.0.0-9570255
Installed as C:\Program Files (x86)\ADB and Fastboot++\adb.exe
...
shell:
shell [-e ESCAPE] [-n] [-Tt] [-x] [COMMAND...]
run remote shell command (interactive shell if no command given)
-e: choose escape character, or "none"; default '~'
-n: don't read from stdin
-T: disable pty allocation
-t: allocate a pty if on a tty (-tt: force pty allocation)
-x: disable remote exit codes and stdout/stderr separation
emu COMMAND run emulator console command
...
Has TWRP anything to do with this?