|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Проверка наличия файлов |
|
Любой язык - Проверка наличия файлов
|
Новый участник Сообщения: 43 |
Привет
Есть папка с файлами и приложением C:\update\ Нужно что бы .bat (или VBS, не имеет значения) проверял наличие файлов в папке C:\update\ После проверки, файлов если всё хорошо то просто закрывался, если какого-то файла не хватает то запускал приложение C:\update\update.exe. Проверку нужно осуществлять по названию файлов. P.s: Заранее в скрипте указать, что в папке C:\update\ должен лежать (например) файл с названием libavutil-55.dll и так далее. Если одного из файлов нет, то приложение запускается. |
|
Отправлено: 16:47, 16-02-2018 |
Пользователь Сообщения: 116
|
Профиль | Отправить PM | Цитировать код не мой...
NoTot - кол-во отсутсвующих файлов NoFil - отсутсвующие файлы set NoTot=0 set NoFil= for %%a in ( "file1.exe" "file2.exe" "file3.exe") do call :ChkFile %%a if %NoTot% == 0 тут команда если все файлы есть echo FILES %NoFil% NOT EXISTS!(%NoTot% Files) тут команда если какой-то из файлов отсутсвует :ChkFile if exist %1 goto :eof set NoFil=%NoFil% %1 set /a NoTot=%NoTot%+1 goto :eof |
Последний раз редактировалось Darkar25, 16-02-2018 в 18:55. Отправлено: 18:48, 16-02-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2720
|
Профиль | Отправить PM | Цитировать Возможный вариант решения CMD/Bat
@Echo Off cls Set "BoxIn=С:\update" Set "Exe=С:\update\update.exe" If Not Exist "%Exe%" ( Echo Exe File "%Exe%" not found &Echo: &Pause &Exit /B 1 ) Pushd "%BoxIn%" If Not %Errorlevel%==0 ( Echo Input folder "%BoxIn%" not found &Echo: &Pause &Exit /B 2 ) Set /A Nbeg=0 For /F "usebackq delims=:" %%i In (`"FINDSTR /B /L /I /N /C:":FilesSpisok" "%~dpnx0""`) DO Set /A Nbeg=%%i If %Nbeg% EQU 0 Echo !!! No file list found &Pause &Exit /B 240 For /F "usebackq tokens=*" %%i In (`"more +%Nbeg% "%~dpnx0""`) DO ( If /I "%%i"=="GoTo :Eof" (Popd &Exit /B 0) If Not Exist "%%i" (Echo File "%BoxIn%\%%i" not found &Echo Запускаем "%Exe%" &"%Exe%" &Popd &GoTo :Eof) ) GoTo :Eof :FilesSpisok update.exe libavutil-55.dll Всякая фигня.hlp и так далее.jpg GoTo :Eof |
------- Последний раз редактировалось megaloman, 16-02-2018 в 19:47. Отправлено: 19:22, 16-02-2018 | #3 |
Новый участник Сообщения: 43
|
Профиль | Отправить PM | Цитировать |
Отправлено: 19:39, 16-02-2018 | #4 |
Ветеран Сообщения: 2720
|
Профиль | Отправить PM | Цитировать Svnkill, Напишите или не пишите - дело Ваше. А еще лучше, сохраните батник с этим словом и со списком файлов, если там есть русские буквы, в 866 (Dos) кодировке - редакторов с такими возможностями предостаточно (в Far-менеджере, AkelPad и т д)
866 кодировка - практически стандарт для написания CMD файлов, это рудимент MS Dos Папка с файлами и файл для запуска прописываются в Set "BoxIn=С:\update" Set "Exe=С:\update\update.exe" Между :FilesSpisok и GoTo :Eof перечислите все файлы в папке, прописанной в BoxIn, которые Вы хотите контролировать. |
|
------- Последний раз редактировалось megaloman, 16-02-2018 в 19:51. Отправлено: 19:45, 16-02-2018 | #5 |
Новый участник Сообщения: 43
|
Профиль | Отправить PM | Цитировать megaloman, Спасибо)
|
Отправлено: 20:08, 16-02-2018 | #6 |
Новый участник Сообщения: 43
|
Профиль | Отправить PM | Цитировать Цитата Darkar25:
Цитата megaloman:
|
||
Последний раз редактировалось Svnkill, 17-02-2018 в 20:20. Отправлено: 20:07, 17-02-2018 | #7 |
Новый участник Сообщения: 43
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Цитата megaloman:
Можно как то без подтверждения? |
||
Отправлено: 20:51, 17-02-2018 | #8 |
Ветеран Сообщения: 2720
|
Профиль | Отправить PM | Цитировать Svnkill, Тот вариант скрипта, наверное, работать при конвертации в Exe не будет. После конвертации не читается список файлов, как это отображено в скрин-шоте. Обязан себя похвалить - сделал диагностику этого положения вещей
![]() Цитата Svnkill:
Вот еще вариант
@Echo Off cls Set "BoxIn=С:\update" Set "Exe=С:\update\update.exe" Set Files="update.exe" "libavutil-55.dll" "Всякая фигня.hlp" "и так далее.jpg" Pushd "%BoxIn%" If Not %Errorlevel%==0 ( Echo Input folder "%BoxIn%" not found &Echo: &Pause &Exit /B 2 ) If Not Exist "%Exe%" ( Echo Exe File "%Exe%" not found &Echo: &Pause &Exit /B 1 ) FOR %%i IN (%Files%) DO If Not Exist "%%~i" (Echo File "%BoxIn%\%%~i" not found &Echo Start "%Exe%" &"%Exe%" &Popd &GoTo :Eof) Аккуратно пропишите пути и список файлов |
|
------- Последний раз редактировалось megaloman, 17-02-2018 в 21:41. Отправлено: 21:28, 17-02-2018 | #9 |
Новый участник Сообщения: 43
|
Профиль | Отправить PM | Цитировать megaloman, Спасибо, ты красавчик)
|
Отправлено: 22:40, 17-02-2018 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Проверка наличия файлов перед запуском приложения | Armsinglom | Скриптовые языки администрирования Windows | 2 | 15-07-2017 13:50 | |
VBS/WSH/JS - [решено] Проверка наличия и запуск нескольких файлов | id342181564@vk | Скриптовые языки администрирования Windows | 8 | 03-04-2017 21:17 | |
PowerShell - Проверка наличия процесса | botkin1 | Скриптовые языки администрирования Windows | 0 | 12-05-2016 07:33 | |
CMD/BAT - проверка наличия файлов | neprotiv | Скриптовые языки администрирования Windows | 0 | 04-04-2013 22:09 | |
VBS/WSH/JS - [решено] Проверка наличия файлов в папке | lesha73 | Скриптовые языки администрирования Windows | 2 | 17-01-2012 16:45 |
|