PDA

Показать полную графическую версию : [решено] Проверка наличия файлов перед запуском приложения


Armsinglom
14-07-2017, 17:34
Добрый день.
Ребят есть такая задача:
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
@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
Батник великолепно отрабатывает!!! Спасибо огромное.




© OSzone.net 2001-2012