diff --git a/README.md b/README.md new file mode 100644 index 0000000..bec98d4 --- /dev/null +++ b/README.md @@ -0,0 +1,45 @@ +# 安卓投屏工具 + +实现自动扫描并投屏 Android 设备,封装为 `.exe` 文件后可直接运行管理多台设备。 +基于 `scrcpy` 与 `adb`,支持多设备同时投屏、动态倒计时显示。 + +--- + +## 功能特点 + +- 自动扫描当前在线 Android 设备 +- 多设备同时投屏,不重复启动已投屏设备 +- 支持从 `%APPDATA%` 或批处理目录加载 `scrcpy.exe` 与 `adb.exe` +- 动态倒计时显示,下次扫描剩余秒数 +- 简单易用,打开即用,无需额外配置 + +--- + +## 使用方法 + +1. 将 `scrcpy.exe` 和 `adb.exe` 放置在批处理目录或 `%APPDATA%` 下 +2. 双击运行封装好的 `.exe` 文件 +3. 工具会自动扫描在线设备并启动投屏 +4. 每隔 `5` 秒自动扫描新设备,可通过修改脚本 `scan_interval` 调整间隔 + +--- + +## 注意事项 + +- 确保电脑已安装 **USB 驱动** 或设备已开启 **USB 调试** +- 初次使用,请确认 `scrcpy.exe` 与 `adb.exe` 可单独运行 +- 本工具仅启动投屏,不管理设备文件或数据 + +--- + +## 兼容环境 + +- Windows 7/8/10/11 +- `scrcpy` >= 2.0 +- `adb` 工具 + +--- + +## 开源协议 + +MIT License \ No newline at end of file diff --git a/src/scrcpy-ed.bat b/src/scrcpy-ed.bat new file mode 100644 index 0000000..1e8710c --- /dev/null +++ b/src/scrcpy-ed.bat @@ -0,0 +1,82 @@ +@echo off +setlocal enabledelayedexpansion + +:: ڴС +mode con: cols=50 lines=15 + +:: ----------------------------- +:: scrcpy adb · +:: ʹĿ¼ֱ AppData +:: ----------------------------- +if exist "%~dp0scrcpy.exe" ( + set SCRCPY_PATH=%~dp0scrcpy.exe + set ADB_PATH=%~dp0adb.exe +) else ( + set SCRCPY_PATH=%APPDATA%\scrcpy.exe + set ADB_PATH=%APPDATA%\adb.exe +) + +:: 豸б +set started= + +:: ɨ룩 +set scan_interval=5 + +:loop +cls +echo ========================================= +echo jasen88-Ͷ +echo ========================================= + +:: ͳƵǰ豸 +set device_count=0 +for /f "skip=1 tokens=1,2" %%a in ('"%ADB_PATH%" devices') do ( + if "%%b"=="device" set /a device_count+=1 +) + +:: ----------------------------- +:: 1. 豸Ƿߣ߾Ƴʾ +:: ----------------------------- +for %%d in (!started!) do ( + "%ADB_PATH%" -s %%d get-state >nul 2>&1 + if errorlevel 1 ( + echo 豸 %%d ѶϿ + set started=!started: %%d=! + ) +) + +:: ----------------------------- +:: 2. ɨ赱ǰ豸δʾ +:: ----------------------------- +for /f "skip=1 tokens=1,2" %%a in ('"%ADB_PATH%" devices') do ( + if "%%b"=="device" ( + set id=%%a + echo !started! | find "%%a" >nul + if errorlevel 1 ( + echo 豸 %%a ӣͶ... + start "" /B "%SCRCPY_PATH%" -s %%a + set started=!started! %%a + timeout /t 5 >nul + ) + ) +) + +:: ----------------------------- +:: 3. ̬ʱʾ +:: ----------------------------- +set /a counter=%scan_interval% +:cd_loop +cls +echo ========================================= +echo jasen88-Ͷ +echo ========================================= +echo ǰ豸 %device_count% %counter% ɨ豸... +echo ---------------------------------------- + +set /a counter-=1 +if %counter% gtr 0 ( + ping -n 2 127.0.0.1 >nul + goto cd_loop +) + +goto loop \ No newline at end of file diff --git a/src/scrcpy-5.bat b/src/scrcpy-user.bat similarity index 79% rename from src/scrcpy-5.bat rename to src/scrcpy-user.bat index 8b148e7..5536a95 100644 --- a/src/scrcpy-5.bat +++ b/src/scrcpy-user.bat @@ -1,21 +1,22 @@ ::[Bat To Exe Converter] :: -::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lbnZ5U9zzcP1skNGHs= -::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1kznephjxnRd+A== -::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1kTgd9gozn86 -::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1mTgd6Ek2FtKkYUIABc4 -::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1mTgd6Ek2E9JmuocBVVcch7L -::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1kTydpkp03kXzppCCBdUHg== -::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1kTyc5k/23tO1Z1dQh9UcnI= -::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1kTyYIIk2jcPwYUIABc4 -::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1kntd4M+1DcL1ptCCBdUHg== -::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1kr0cJgS10VOndkBBRVZci2jax0x52xDogQ= -::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lbnZ5U9zzRfgM5s -::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lbnZ5U9zzdZl8UfAxddMBCqem8= -::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lbnZ5U9zzdUl8gDAghXchfleA0nyQ== -::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lbnZ5U9zzdJndkaCQk4 -::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1nbAWcRj0nZW+A== -::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lbzZ5M+13dKlM5BWVVcch7L +::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lb2dqo+1WhZiNJBGQhdbFypbxtU +::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lb2dqo+1WhZiNJBCR8WfBO/Dg== +::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lb2dqok1XVU1tsCC3s= +::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lb2dqos0ngUndMJbA== +::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lb2dqoM0nhtkcUtHBIWeh6nDg== +::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lb2dqoM0nhtkcU5Hxl5bhvlagM4yQ== +::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lb2dqoswHlVnM4PQU0JMBanYm8= +::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lb2dqoswHxVisYNGFYOL1yvYgNU +::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lb2dqoswG9OkcdBWUIWeh6nDg== +::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lb2dqoh33hPi8lBXVUIMBanYm8= +::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lb2dqoixn9Up8ozGB5KcxulbwMLoWtQsyqHNtP8 +::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lb2dqo+1WhZiNJCCQNdHg== +::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lb2dqo+1WhZiNJBDxRWbR2na0E2qHoi +::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lb2dqo+1WhZiNJBAhRbcRy4YQMx53hApQQ= +::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lb2dqo+1WhZiNJBHx5KaBe5Dg== +::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lb2dqoe8lYI1s8AAHs= +::fBE1pAF6MU+EWHreyHcjLQlHcCWxCViGIroL5uT07u6UnkccR+cxINeWzrubMK1C1lb2dqo+wWhfi8oBHBddM0flagM4yQ== ::YAwzoRdxOk+EWAjk ::fBw5plQjdCyDJGyX8VAjFDpneTe+GG6pDaET+NT55v6Ft0oiUuMpcYzU1PqHI+9z ::YAwzuBVtJxjWCl3EqQJgSA== @@ -23,16 +24,16 @@ ::Yhs/ulQjdF25 ::cxAkpRVqdFKZSDk= ::cBs/ulQjdF25 -::ZR41oxFsdFKZSDk= +::ZR41oxFsdFKZSTk= ::eBoioBt6dFKZSDk= ::cRo6pxp7LAbNWATEpSI= ::egkzugNsPRvcWATEpCI= ::dAsiuh18IRvcCxnZtBJQ ::cRYluBh/LU+EWAnk -::YxY4rhs+aU+JeA== -::cxY6rQJ7JhzQF1fEqQJQ -::ZQ05rAF9IBncCkqN+0xwdVs0 -::ZQ05rAF9IAHYFVzEqQJQ +::YxY4rhs+aU+IeA== +::cxY6rQJ7JhzQF1fEqQJhZkkaHWQ= +::ZQ05rAF9IBncCkqN+0xwdVsFAlbMbQs= +::ZQ05rAF9IAHYFVzEqQK56+XToM4E1p4/11oKubqqjw== ::eg0/rx1wNQPfEVWB+kM9LVsJDGQ= ::fBEirQZwNQPfEVWB+kM9LVsJDGQ= ::cRolqwZ3JBvQF1fEqQJQ @@ -42,7 +43,7 @@ ::ZQ0/vhVqMQ3MEVWAtB9wSA== ::Zg8zqx1/OA3MEVWAtB9wSA== ::dhA7pRFwIByZRRnk -::Zh4grVQjdCyDJGyX8VAjFDpneTe+GG6pDaET+NTx7vmCrBVF3SHB/2MRlzJk1WXCBVO1O8R8mH9Cnas= +::Zh4grVQjdCyDJGyX8VAjFDpneTe+GG6pDaET+NTx7vmCrBVF3SHB/2MRlzJk1WXCBVO1J8dj02Jf+A== ::YB416Ek+ZG8= :: :: @@ -54,16 +55,10 @@ setlocal enabledelayedexpansion mode con: cols=50 lines=15 :: ----------------------------- -:: scrcpy adb · -:: ʹĿ¼ֱ AppData +:: scrcpy adb ·̶ʹ AppData :: ----------------------------- -if exist "%~dp0scrcpy.exe" ( - set SCRCPY_PATH=%~dp0scrcpy.exe - set ADB_PATH=%~dp0adb.exe -) else ( - set SCRCPY_PATH=%APPDATA%\scrcpy.exe - set ADB_PATH=%APPDATA%\adb.exe -) +set SCRCPY_PATH=%APPDATA%\scrcpy.exe +set ADB_PATH=%APPDATA%\adb.exe :: 豸б set started= diff --git a/tools/Bat_To_Exe_Converter.exe b/tools/Bat_To_Exe_Converter.exe new file mode 100644 index 0000000..090b472 Binary files /dev/null and b/tools/Bat_To_Exe_Converter.exe differ diff --git a/tools/reshacker_setup.exe b/tools/reshacker_setup.exe new file mode 100644 index 0000000..696c093 Binary files /dev/null and b/tools/reshacker_setup.exe differ diff --git a/tools/settings b/tools/settings new file mode 100644 index 0000000..93e5032 Binary files /dev/null and b/tools/settings differ