Как стать автором
Обновить

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

Время на прочтение2 мин
Количество просмотров2.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 — есть :)
Теги:
Хабы:
+2
Комментарии9

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн