extreen@vk
18-03-2013, 23:53
Есть задача (предисловие долгое - поэтому без подробностей).
Есть каталог 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
Есть каталог 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