Данный скрипт запускает chdbfl, вводит путь к базе данных, ставит флажок "Исправлять обнаруженные ошибки" и нажимает кнопку "Выполнить". Дождаться завершения и нажать кнопку "Закрыть" пользователь должен самостоятельно.
Скрипт предназначен для запуска chdbfl на компьютерах, на которых установлена платформа 1С 8.2, но Вы легко можете изменить путь расположения chdbfl самостоятельно.
Текст скрипта:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.VisualBasic")
function Send-Keys ([string]$Window,[int]$Interval=50) #Устанавливаем аргументы и значение по умолчанию для $interval
{
begin #Блок begin выполняется 1 раз в начале скрипта
{
$shell = new-object -com WScript.Shell #Создаем объект WScript.Shell
$Comp = new-object Microsoft.VisualBasic.Devices.Computer
if ($window) #Если переменная $window не пуста
{
write-host "Waiting for window '$Window'" #Пишем на консоль состояние
while (!$shell.AppActivate($Window)) #Пока не активируем указанное окно...
{
start-sleep -milliseconds $Interval #...Ждем заданное время
}
}
}
process #Блок process выполняется для каждого объекта пришедшего через конвеер |, текущий объект доступен в переменной $_
{
$Comp.KeyBoard.SendKeys($_,$true)
start-sleep -milliseconds $Interval #Ждем
}
}
if (Test-Path -path "C:\Program Files (x86)\1cv82")
{
$PathTo1C = "C:\Program Files (x86)\1cv82\";
}
else
{
$PathTo1C = "C:\Program Files\1cv82\";
}
$Version1C = (Get-Command ($PathTo1C+"common\1cestart.exe")).FileVersionInfo.FileVersion;
$xpath = "C:\InfoBase\1cv8.1cd";
$app = start-process ($PathTo1C+$Version1C+"\bin\chdbfl.exe");
$app;
$xpath,"{TAB}","{+}","{TAB}", "{TAB}", "{ENTER}" | Send-Keys "Проверка физической целостности файла БД"
Обновление от 22.11.2013: необходимо, чтобы путь к базе данных не содержал символов кириллицы, иначе они будут заменены на абракадабры. Благодаря подсказке Serj1C, теперь путь к базе можеть содержать и кириллицу.
Так же можно создать ярлычок на рабочий стол с указанием базы: powershell.exe <ПутьКСкрипту> <ПолноеИмяФайлаБазыДанных>
Тогда объявление переменной $xpath будет иметь вид: $xpath = $args[0];