ads

"Делай что можешь с тем, что имеешь, там, где ты есть". Теодор Рузвельт

понедельник, 2 июня 2014 г.

Batch-файлы в Windows

Несколько полезных скриптов для командной оболочки cmd в Windows (bat-файлы).

Скрипт с использованием системной утилиты wmic. Для его работы оболочка должна быть запущена от администратора. Помещает каталог указанного процесса в PATH и выполняет bat-файл.

:: egax
:: Добавляем в PATH каталог исполняемого файла %1 процесса.
:: Запускаем если передан .bat %2

@echo off
wmic /? > nul
for /f "delims=" %%a in ('wmic process where ^(name^="%1"^) get ExecutablePath^|find 
/V "ExecutablePath"^|findstr /V "^$"') do (
  echo Сервис найден %%a
  set PATH=%%~dpa
  if "%2" == "" goto end
  call "%~dp0\%2" %1 && goto end
)
if not exist "%~fs$PATH:1" (
  echo Запущенный сервис не найден.
  echo Запустите %1 и запустите вручную 'checkproc.bat %1 %2'.
)
:end
Скрипт используется для загрузки базы данных PostgreSQL
checkproc.bat postgres.exe install-bd.bat
Вот текст скрипта install-bd.bat для восстановления базы postgresql из sql-дампа, созданного pg_dump.
:: egax
:: Распаковка базы mybd

@echo off
::имя базы и архива
set dbname=mybd
set initsql=}initsql{.sql
echo Установка базы %dbname% (требуется пароль postgres) . . .
pushd "%~dp0"
for /f %%a in ('dir /B "%dbname%"') do (
  echo drop database %dbname%; >> %initsql%
  echo create database %dbname% encoding 'win' template template0; >> %initsql%
  echo \connect %dbname% >> %initsql%
  echo \i %%a >> %initsql%
  echo vacuum full analyze; >> %initsql%
  psql -U postgres -f %initsql% template1 > nul 2>install-%dbname%.log
  del /q %initsql%
)
:end
popd