run_the_same_name_ps1.bat - скрипт который запускает PowerShell (*.ps1) скрипты с таким же названием как у *.bat файла в каталоге рядом. С возможностью передачи аргументов без проверки на запуск с правами администратора.
Повышение прав, если необходимо, должно быть запрошено в самом PowerShell скрипте.
Пример:
browser.bat
будет запущен
browser.ps1
Если в скрипте PowerShell (*.ps1) не реализован запрос на повышение прав для выполнения, но оно требуется, то можно запускать через этот скрипт.
Если скрипт выболняется по запросу, а не в автоматическоми режиме, то рекомендуется запрос на повышение прав делать через сам скрипт PowerShell.
Текст кода "run_the_same_name_ps1.bat" (с запросом повышения прав выполнения)
- run_the_same_name_ps1.bat
@echo off
setlocal
title PowerShell Script Launcher
:: ==========================================================
:: UNIVERSAL PS1 LAUNCHER
:: Runs a PowerShell script with the same name as this BAT
:: Compatible with PowerShell 5.x and 7+
:: Author: takraztak
:: ==========================================================
:: --- Admin rights check ---
net session >nul 2>&1
if %errorlevel% neq 0 (
echo.
echo [!] Administrator privileges required. Restarting...
powershell -NoLogo -NoProfile -Command "Start-Process '%~f0' -Verb RunAs"
exit /b
)
cls
echo.
echo ==========================================================
echo UNIVERSAL PS1 LAUNCHER
echo ==========================================================
echo.
:: --- Determine PowerShell executable ---
set "PS_EXE=%ProgramFiles%\PowerShell\7\pwsh.exe"
if not exist "%PS_EXE%" set "PS_EXE=%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe"
:: --- Determine script name (same as BAT) ---
set "PS1=%~dp0%~n0.ps1"
if not exist "%PS1%" (
echo [ERR] PowerShell script not found:
echo %PS1%
echo.
echo Create a file with the same name and .ps1 extension.
echo Example:
echo %~n0.ps1
echo.
pause
exit /b 1
)
echo [OK] Using PowerShell: %PS_EXE%
echo [OK] Executing script : %PS1%
echo ----------------------------------------------------------
echo.
:: --- Run script ---
"%PS_EXE%" -NoLogo -NoProfile -ExecutionPolicy Bypass -File "%PS1%" %*
echo.
echo ----------------------------------------------------------
echo [DONE] Script finished.
echo ==========================================================
echo.
endlocal
pause
exit /b