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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Проверка наличия файлов перед запуском приложения (http://forum.oszone.net/showthread.php?t=328348)

Armsinglom 14-07-2017 17:34 2751415

Проверка наличия файлов перед запуском приложения
 
Добрый день.
Ребят есть такая задача:
1) Есть папка с приложением C:\updd\bad\
2) Нужно что бы после загрузки Windows, в автозагрузке стартовало что нибудь типа .bat и проверяло актуальность файлов в папке C:\updd\bad
3) После проверки, файлов если всё хорошо то запускается само приложение C:\updd\bad\bad.exe
Проверку нужно осуществлять по названию файла и его весу в байтах:

Т.е. Заранее в скрипте указать, что в папке C:\updd\bad\ должен лежать (например) файлик с названием gubs и весит он 147 000 байт и т.д.
Если одного из файлов нет или вес файла отличается от заданного в скрипте, то приложение не запускается(было бы хорошо если бы писался еще и log).

Каким способом это можно реализовать и если есть готовые решения буду очень благодарен.

megaloman 14-07-2017 20:39 2751458

Как-то так. Пропишите свой путь к папке, число контролируемых файлов, их имена и объём в байтах, полный путь приложения.exe. Лог пишется в прописанную папку.
Код:

@Echo Off
cls

Set "BoxIn=Z:\Post\Place"
Set "Program=Notepad.exe"

Set /A N=3

Set "F1=1a a044007aaa.xml"
Set "S1=561"

Set "F2=2aa 044018 jj.xml"
Set "S2=169422"

Set "F3=3aaa044042sxs.xml" 
Set "S3=30294"

Set "LogFile=%BoxIn%\%~nx0.log"


Set "OK=0"
FOR /L %%i IN (1,1,%N%) DO Call :Control "%%F%%i%%"  "%%S%%i%%"
If %OK%==0 (
        Echo +++ %Date% %Time% Control Successful
        Echo +++ %Date% %Time% Control Successful >>"%LogFile%"
       
        Echo:
        Echo Start You Program There

        Cd /D "%BoxIn%"
        Start "" "%Program%"
)

Pause
GoTo :Eof

:Control
        For %%f In ("%BoxIn%\%~1") Do Set "SN="%%~zf""

        If %SN%=="" Call :Mess "??? %Date% %Time% File Not Found  '%BoxIn%\%~1'" & Set "OK=1"
        If Not %SN%=="" If Not %SN%==%2 Call :Mess "--- %Date% %Time% File Has Wrong Size=%SN%  '%BoxIn%\%~1' (needs %2)" & Set "OK=1"
GoTo :Eof

:Mess
        Echo %~1
        Echo %~1 >>"%LogFile%"
GoTo :Eof

Если не хотите видеть на экране никакие сообщения, а только иметь записи в log-файл, уберите выделенные строки

Armsinglom 15-07-2017 13:50 2751591

Батник великолепно отрабатывает!!! Спасибо огромное.


Время: 16:57.

Время: 16:57.
© OSzone.net 2001-