Files
HyperCLI/batchr.bat
2026-01-26 14:38:13 +01:00

195 lines
5.4 KiB
Batchfile

@echo off
REM === Batchr Menu Launcher ===
REM Repository: https://git.weektab.org/companas/batchr
REM Powered by Weektab
REM Author: Flamur Veliqi (Netbie)
setlocal enabledelayedexpansion
:MAIN_MENU
cls
echo Batchr Menu Launcher
echo.
echo Powered by Weektab
echo Web: www.weektab.org
echo E-Mail: support@weektab.org
echo Project: Companas
echo Repository: git.weektab.org/companas/batchr
echo Author: Flamur Veliqi (Netbie)
echo.
echo //////////////////////////////////////////////////
echo.
echo Select script category:
echo.
echo [1] Own Scripts (from /files)
echo [2] Third-Party Scripts (from /files/third_party)
echo [0] Exit
echo.
echo //////////////////////////////////////////////////
echo.
set /p CATEGORY="Select option: "
if "%CATEGORY%"=="0" goto EXIT
if "%CATEGORY%"=="1" (
set "SCRIPT_PATH=files"
set "API_PATH=files"
set "CATEGORY_NAME=Own Scripts"
goto MENU
)
if "%CATEGORY%"=="2" (
set "SCRIPT_PATH=files/third_party"
set "API_PATH=files/third_party"
set "CATEGORY_NAME=Third-Party Scripts"
goto MENU
)
echo Invalid selection!
timeout /t 2 >nul
goto MAIN_MENU
:MENU
cls
echo Batchr Menu Launcher - !CATEGORY_NAME!
echo.
echo Powered by Weektab
echo Web: www.weektab.org
echo E-Mail: support@weektab.org
echo Project: Companas
echo Repository: git.weektab.org/companas/batchr
echo Author: Flamur Veliqi (Netbie)
echo.
echo //////////////////////////////////////////////////
echo.
echo Scanning /!SCRIPT_PATH! directory...
echo.
REM Use Gitea API to list files in selected directory
powershell -Command "$ProgressPreference = 'SilentlyContinue'; try { $response = Invoke-RestMethod -Uri 'https://git.weektab.org/api/v1/repos/companas/batchr/contents/!API_PATH!'; $batFiles = $response | Where-Object { $_.name -like '*.bat' } | Select-Object -ExpandProperty name | Sort-Object; if ($batFiles) { $batFiles | Out-File '%TEMP%\repo_scripts.txt' -Encoding ASCII -NoNewline:$false } else { 'NONE' | Out-File '%TEMP%\repo_scripts.txt' -Encoding ASCII } } catch { 'ERROR' | Out-File '%TEMP%\repo_scripts.txt' -Encoding ASCII }" 2>nul
if not exist "%TEMP%\repo_scripts.txt" (
echo ERROR: Unable to access repository API
pause
goto MAIN_MENU
)
REM Check for errors
set "FIRST_LINE="
for /f "delims=" %%a in (%TEMP%\repo_scripts.txt) do (
set "FIRST_LINE=%%a"
goto :check_error
)
:check_error
if "%FIRST_LINE%"=="ERROR" (
echo ERROR: API request failed
pause
goto MAIN_MENU
)
if "%FIRST_LINE%"=="NONE" (
echo No .bat files found in /!SCRIPT_PATH! directory!
pause
goto MAIN_MENU
)
REM Get all script titles in one PowerShell call
echo Extracting list...
echo.
powershell -Command "$ProgressPreference = 'SilentlyContinue'; try { $files = Get-Content '%TEMP%\repo_scripts.txt'; $results = @(); foreach ($file in $files) { if ($file -and $file -ne '' -and $file -ne 'NONE' -and $file -ne 'ERROR') { try { $url = 'https://git.weektab.org/companas/batchr/raw/branch/main/!SCRIPT_PATH!/' + $file; $content = (Invoke-WebRequest -Uri $url -UseBasicParsing).Content; if ($content -match 'REM\s*===\s*(.+?)\s*===') { $results += $file + '|' + $matches[1] } else { $results += $file + '|' } } catch { $results += $file + '|' } } }; $results | Out-File '%TEMP%\repo_titles.txt' -Encoding ASCII } catch { }" 2>nul
REM Display menu
set INDEX=0
for /f "tokens=1,2 delims=|" %%a in (%TEMP%\repo_titles.txt) do (
set "FILENAME=%%a"
set "SCRIPT_TITLE=%%b"
if not "!FILENAME!"=="" (
set /a INDEX+=1
set "SCRIPT_NAME[!INDEX!]=!FILENAME!"
REM Fallback to formatted filename if title not found
if "!SCRIPT_TITLE!"=="" (
set "SCRIPT_TITLE=!FILENAME:.bat=!"
set "SCRIPT_TITLE=!SCRIPT_TITLE:-= !"
set "SCRIPT_TITLE=!SCRIPT_TITLE:_= !"
)
set "DISPLAY[!INDEX!]=!SCRIPT_TITLE!"
echo [!INDEX!] !SCRIPT_TITLE!
)
)
set TOTAL_SCRIPTS=%INDEX%
if %TOTAL_SCRIPTS%==0 (
echo No .bat files found!
pause
goto MAIN_MENU
)
echo.
echo [R] Refresh List
echo [B] Back to Category Selection
echo [0] Exit
echo.
echo //////////////////////////////////////////////////
echo.
set /p CHOICE="Select option: "
if /i "%CHOICE%"=="R" goto MENU
if /i "%CHOICE%"=="B" goto MAIN_MENU
if "%CHOICE%"=="0" goto EXIT
REM Validate selection
set "VALID=0"
for /l %%i in (1,1,%TOTAL_SCRIPTS%) do (
if "%CHOICE%"=="%%i" set "VALID=1"
)
if "%VALID%"=="0" (
echo Invalid selection!
timeout /t 2 >nul
goto MENU
)
REM Execute script
cls
echo /// Executing: !DISPLAY[%CHOICE%]!
echo.
set "SCRIPT_URL=https://git.weektab.org/companas/batchr/raw/branch/main/!SCRIPT_PATH!/!SCRIPT_NAME[%CHOICE%]!"
set "TEMP_SCRIPT=%TEMP%\batch_script_%RANDOM%.bat"
echo Downloading script...
powershell -Command "$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest -Uri '!SCRIPT_URL!' -OutFile '%TEMP_SCRIPT%'" 2>nul
if not exist "%TEMP_SCRIPT%" (
echo ERROR: Download failed!
echo URL: !SCRIPT_URL!
pause
goto MENU
)
echo Script downloaded successfully!
echo.
echo /// Script initialized
echo.
call "%TEMP_SCRIPT%"
if exist "%TEMP_SCRIPT%" del "%TEMP_SCRIPT%" 2>nul
echo.
echo //////////////////////////////////////////////////
echo Completed!
echo //////////////////////////////////////////////////
pause
goto MENU
:EXIT
if exist "%TEMP%\repo_readme.md" del "%TEMP%\repo_readme.md" 2>nul
if exist "%TEMP%\repo_scripts.txt" del "%TEMP%\repo_scripts.txt" 2>nul
if exist "%TEMP%\repo_titles.txt" del "%TEMP%\repo_titles.txt" 2>nul
cls
echo Goodbye!
timeout /t 1 >nul
exit