tips:
①对应的 Notepad++ 的快捷键为 Ctrl+k (单行、多行注释)& Ctrl+q (区块注释)
方式一、使用函数参数获取返回值(返回函数结果)
参数作为输出参数时,注意:
★函数内不要使用SETLOCAL和ENDLOCAL
★此文件不要设置setlocal enabledelayedexpansion
echo off
REM sample:使用函数参数带回返回值,类似于C++引用
call :getDevSN DevSN
echo getDevSN errorlevel:%errorlevel%
call :getUKeyNo UKeyNo
echo getUKeyNo errorlevel:%errorlevel%
echo ========result=======
echo DevSN=%DevSN%
echo UKeyNo=%UKeyNo%
pause
goto:eof
:getDevSN
For /F " tokens=1 delims= " %%a in ('adb devices ^| findstr device$') do (
set tmpDevSN=%%a
)
set %~1=%tmpDevSN:~0,16%
echo param %~1
exit /b 0
goto:eof
goto:eof
:getUKeyNo
For /F " tokens=1 delims=UKey" %%b in ('adb shell "ls /data/vendor/camera_dump | grep UKey"') do (
set tmpUKeyNo=%%b
)
set %~1=%tmpUKeyNo%
echo param %~1
exit /b 99
goto:eof
执行结果:
方式二、全局变量实现返回函数结果
echo off
REM setlocal enabledelayedexpansion
set DevSN=""
set UKeyNo=""
call :getDevSN && echo getDevSN errorlevel:%errorlevel%
call :getUKeyNo && echo getUKeyNo errorlevel:%errorlevel%
echo ========result=======
echo DevSN=%DevSN%
echo UKeyNo=%UKeyNo%
pause
exit /b 0
goto:eof
goto:eof
:getDevSN
For /F " tokens=1 delims= " %%a in ('adb devices ^| findstr device$') do (
set tmpDevSN=%%a
)
rem 在有enableDelayedExpansion时,用!! 引用变量
set DevSN=%tmpDevSN:~0,16%
exit /b 0
goto:eof
goto:eof
:getUKeyNo
For /F " tokens=1 delims=UKey" %%b in ('adb shell "ls /data/vendor/camera_dump | grep UKey"') do (
set tmpUKeyNo=%%b
)
set UKeyNo=%tmpUKeyNo%
exit /b 0
goto:eof
REM endlocal
执行结果:
others:
For /F " tokens=1-2 delims=:" %%a in ('adb shell "dumpsys meminfo | grep 'Total RAM:'"') do (
echo result: [%%a] [%%b]
)
pause
执行结果: