Pull to refresh

Bat-файл, иллюстрирующий работу с реестром, UNC путями и строками

Reading time2 min
Views2.2K
Если под рукой нет компилятора, то в windows окружении батники — довольно удобный инструмент. Приведённый ниже пример иллюстрирует работу с реестром из батника, как реализовать работу батника с сетевого ресурса, а также некоторые простейшие строковые операции на примере копирывания и запуска крэка для игры S.T.A.L.K.E.R., путь к которой выдёргивается из реестра (листинг под хабракатом).

Было бы интересно посмотреть на более элегантное решение этой задачи.

@cls
@echo off

echo ********************************************************
echo *****************S.T.A.L.K.E.R.**no-cd******************
echo ********************************************************

rem В цикле читаем только пятую строку вывода REG QUERY,
rem затем разбиваем её по проблам на куски и берём третий кусок и все последующие,
rem на случай, если в пути к игре есть пробелы. Цикл срабатывает только 1 раз.

for /f "skip=4 tokens=3*" %%i in ('REG QUERY "HKLM\SOFTWARE\GSC Game World\STALKER-SHOC" /v InstallPath') do (

rem Копируем крэк в папку с программой. (Крэк лежит в этой же папке с батником)
rem Ниже следует ветвление на случай наличия в пути к игре пробела

rem ПРИМЕЧАНИЕ! В %~dp0 содержится полный путь к батнику
rem Использование xcopy нужно для того чтобы возможно было скопирывать файл с
rem сетевого ресурса, а конструкция %%i:~0,-1%% соответственно отрезает последний слэш
rem из пути к папке игры, чтобы xcopy отработала правильно

IF "%%j" == "" (
xcopy "%~dp0crack.exe" "%%i:~0,-1%%"
) ELSE (
xcopy "%~dp0crack.exe" "%%i %%j:~0,-1%%"
)

rem Заходим в папку со сталкером
cd /d "%%i %%j" || exit 1
rem Запускаем крэк
crack.exe
pause
exit
)

P.S. утилиты reg.exe в win2k по-умолчанию нет, в winxp — есть :)
Tags:
Hubs:
Total votes 8: ↑5 and ↓3+2
Comments9

Articles