Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Windows Server 2008/2008 R2 (http://forum.oszone.net/forumdisplay.php?f=97)
-   -   Помогите додумать batник. (http://forum.oszone.net/showthread.php?t=256622)

extreen@vk 18-03-2013 23:53 2113997

Помогите додумать batник.
 
Есть задача (предисловие долгое - поэтому без подробностей).

Есть каталог S: (сетевой диск)
В этом каталоге появляются многие файлики, но среди них есть шаблонные DEV9999.txt или DEV3366.txt и т.д. DEV*.txt
Задача запустить 1С с определенной обработкой, и после того как файлик исчезнит закрыть 1с.
Сложности:
Сервер терминалов. Соответственно запуск 1с и завершение только для пользователя NSK\Sync, остальных это не должно коснуться!!!
Выключение сервера иногда: batник должен сам запуститься в фоне без входа пользователя. Этот батник должен 100% времени работы сервера быть запущен.

Я так понимаю тут либо 1с запускать от пользователя sync внутри батника либо сам bat запускать от пользователя Sync.


Вот что пока получилось:
Код:

@echo off
color 0a

set FL_D=S:
set FL_P=S:\1c
cd %FL_P%
%FL_D%

:check
timeout /t 2
if exist %FL_D%\Dev*.txt goto check1s
cls
goto close

:close
for /f %%a in ('tasklist /nh /fi "imagename eq %filename%" /fi "username eq NSK\sync" ^| find /c "%filename%"') do set /a quantity=%%a
if %quantity% geq 1 goto close_1s
goto end

:close_1s
taskkill /im "%filename%" /fi "username eq NSK\sync" /F >> %FL_P%\log\1c_%date:~-10%.log
goto end

:check1s
set filename=1cv8.exe
if "%1" neq "" set filename=%1

:BEGIN
for /f %%a in ('tasklist /nh /fi "imagename eq %filename%" /fi "username eq NSK\sync" ^| find /c "%filename%"') do set /a quantity=%%a
if %quantity% geq 1 goto ALREADY_RUN
cls
echo Run %filename%...
for %%x in (dev*.txt) do set dev=%%~nx
echo %time:~-15% - %filename:~-15% - %dev%>> %FL_P%\log\1c_%date:~-10%.log
"%ProgramFiles(x86)%\1cv82\common\1cestart.exe" ENTERPRISE /S "127.0.0.1\baza" /N "sync" /P "***********"  /Execute "%FL_P%\6.1.epf" /DisableStartupMessages
)
goto end

:ALREADY_RUN
echo Already run %quantity% processes of %filename%

:END
cls
timeout /t 5
cls
goto check


extreen@vk 18-03-2013 23:57 2114000

Заранее благодарен за помощь

__sa__nya 19-03-2013 08:30 2114153

extreen@vk, по поводу того чтобы батник всегда был запущен не подскажу, а насчет запуска батника до входа пользователя - в Планировщике заданий создаете задание, в мастере создания задачи на шаге "Когда запускать задачу" можете выбрать "при запуске компьютера".


Время: 08:51.

Время: 08:51.
© OSzone.net 2001-