|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Упрощенная проверка файлов |
|
|
CMD/BAT - [решено] Упрощенная проверка файлов
|
![]() Старожил Сообщения: 177 |
Подскажите пожалуйста как можно упростить и сделать это всё через for
If Not Exist file2.exe ( echo:Нету файла file1.exe&echo:Продолжение не возможно.&pause >nul&Exit 1 ) If Not Exist cmd.log ( :: Создаём файл и продолжаем. echo:> cmd.log ) If Not Exist file3.exe ( echo:Нету файла file2.exe&echo:Продолжение не возможно.&pause >nul&Exit 1 ) Только cmd.log Если его нету тогда создаём и продолжаем дальше выполнять скрипт.... если файлов нету, тогда выводить ошибку, что какова то из файлов не хватает, если файлы все присутствуют тогда продолжаем дальше. Если возможно как нибуть можно сделать, что бы показывало каких именно не хватает для продолжения то выводить их имя в консоль... в консоле вид типа.... |
|
Отправлено: 08:15, 28-02-2012 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать @Echo Off Set RequiredFiles="file.exe" "cmd.log" "file3.exe" Call :CheckRequiredFiles %RequiredFiles% :CheckRequiredFiles If Not Exist "%~1" ( Echo Missing required file: %~1 Pause&Exit 1 ) Shift If Not "%~1"=="" GoTo :CheckRequiredFiles :: ============= :: Здесь основной код скрипта :: ============= |
Отправлено: 21:31, 28-02-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Старожил Сообщения: 177
|
Профиль | Отправить PM | Цитировать Anonymоus,
Подскажите пожалуйста как можно упростить и сделать это всё через for » cmd.log если его нету тогда создаём и продолжаем дальше выполнять скрипт.... ------- Сейчас лог файла если нету, то скрипт выдаёт ошибку и пишет что файл cmd.log не наиден, я писал выше его нужно создать если он остсутствует и продолжать дальше выполнять основной код скрипта. И просил сделать всё через фор. Если возможно как нибуть можно сделать, что бы показывало каких именно не хватает для продолжения то выводить их имя в консоль... Исправляю *Надо что бы скрипт полностью проверил все файлы и показал каких имеено не хватает, если все файлы на месте тогда ничего не показывать и продолжать выполнять основной код скрипта.. Обьясняю в дву словах Нужно чтобы скрипт проверил файлы в дериктории %SystemRoot%\System32, если тут каких то файлов не хватает, кроме cmd.log, тогда показывать каких именно и выводить имена всех файлов, которых не хватает, в консоль. cmd.log - Этот файл у меня находится и будет находиться в папке с пакетным файлом, поэтому ему путь не нужен, он должен проверяться в деректории из которой запускается батник и в случае если его рядом не оказалось, тогда создать его и ошибок никаких не выводить (Тоесть продолжать выполнять основной код скрипта.) |
Последний раз редактировалось root221, 29-02-2012 в 00:16. Отправлено: 00:04, 29-02-2012 | #3 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать root221, если вам важно, чтобы проверка именно через for была - вот второй вариант. Хотя не пойму, чем первый не устроил, который с shift.
Если не находит один или несколько файлов - пишет, какие файлы не были найдены, потом пауза для прочтения и выход с кодом ошибки 1. Если всё в порядке, то выполняет нужные вам команды, которые идут снизу этого кода. @Echo Off :: Полные или относительные пути к файлам для проверки, разделённые символом ; Set RequiredFiles=file1.exe;C:\file2.exe;%WinDir%\file3.exe Set MissingFiles=false :Check For /F "tokens=1,* delims=;" %%A In ("%RequiredFiles%") Do ( If Not "%%A"=="" ( If Not Exist "%%A" (Set MissingFiles=true & Echo Не найден файл "%%A") Set RequiredFiles=%%B GoTo Check )) If %MissingFiles%==true (Echo Ошибка: не найдены необходимые файлы&Pause&Exit 1) :: Конец проверки, дальше остальной код скрипта |
Отправлено: 03:48, 29-02-2012 | #4 |
![]() Старожил Сообщения: 177
|
Профиль | Отправить PM | Цитировать Цитата root221:
|
||
Отправлено: 06:49, 01-03-2012 | #5 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать :: Полные или относительные пути к файлам для проверки, разделённые символом ; Set RequiredFiles=file1.exe;C:\file2.exe;%WinDir%\file3.exe;cmd.log :Check For /F "tokens=1,* delims=;" %%A In ("%RequiredFiles%") Do ( If Not "%%A"=="" ( If Not Exist "%%A" ( If "%%A"=="cmd.log" (Echo.>cmd.log&GoTo Check) Echo Ошибка: Не найден файл "%%A" ) Set RequiredFiles=%%B GoTo Check )) |
Отправлено: 09:41, 02-03-2012 | #6 |
![]() Старожил Сообщения: 177
|
Профиль | Отправить PM | Цитировать Anonymоus, нет он не показывает все файлы которые не доступны, только по одному, который скажем так первый попадётся, тот и покажет...
предыдущий показывает нормально... |
Отправлено: 21:39, 02-03-2012 | #7 |
![]() Старожил Сообщения: 177
|
Профиль | Отправить PM | Цитировать Anonymоus,
Решено: :Check For /F "tokens=1,* delims=;" %%A In ("%RequiredFiles%") Do ( If Not "%%A"=="" ( If Not Exist "%%A" (Set MissingFiles=true If "%%A"=="cmd.log" (Echo.>cmd.log&GoTo Check) Echo Ошибка: Не найден файл "%%A" ) Set RequiredFiles=%%B GoTo Check )) If %MissingFiles%==true (Echo Ошибка: Не найдены необходимые файлы&>nul Pause&Exit 1) Блин)) Не решено(( В общем удаляю файл cmd.log запускаю скрипт, он создаёт cmd.log, и пишет И пока ещё раз не перезапустишь, работать он как правило не будет... Как решить? так начинаю понимать из за чего это происходит) Как раз таки из-за того что я добавил :Check For /F "tokens=1,* delims=;" %%A In ("%RequiredFiles%") Do ( If Not "%%A"=="" ( If Not Exist "%%A" (Set MissingFiles=true If "%%A"=="cmd.log" (Echo.>cmd.log&GoTo Check) Echo Ошибка: Не найден файл "%%A" ) Set RequiredFiles=%%B GoTo Check )) If %MissingFiles%==true (Echo Ошибка: Не найдены необходимые файлы&>nul Pause&Exit 1) |
Последний раз редактировалось root221, 02-03-2012 в 22:08. Отправлено: 21:58, 02-03-2012 | #8 |
![]() Старожил Сообщения: 177
|
Профиль | Отправить PM | Цитировать Что никто кроме Anonymоus, не может мне помочь?
|
Отправлено: 00:42, 03-03-2012 | #9 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать root221, вот так у вас работает? Я несколько раз проверил, если cmd.log не существует - он молча его создает и продолжает работу, о не найденных файлах не пишет.
:Check For /F "tokens=1,* delims=;" %%A In ("%RequiredFiles%") Do ( If Not "%%A"=="" ( If Not Exist "%%A" ( If "%%A"=="cmd.log" Echo.>cmd.log&GoTo Check Set MissingFiles=true Echo Ошибка: Не найден файл "%%A" ) Set RequiredFiles=%%B GoTo Check ) ) If "%MissingFiles%"=="true" (Echo Ошибка: Не найдены необходимые файлы&>nul Pause&Exit 1) Цитата root221:
|
|
Отправлено: 05:31, 03-03-2012 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - [решено] Проверка наличия файлов в папке | lesha73 | Скриптовые языки администрирования Windows | 2 | 17-01-2012 16:45 | |
VBS/WSH/JS - Проверка и удаление файлов | AndrewZ | Скриптовые языки администрирования Windows | 2 | 04-03-2011 16:56 | |
Проверка файлов на изменение и их удаление | in-com | AutoIt | 0 | 04-11-2010 09:41 | |
Конкурс - Упрощенная настройка беспроводной сети в Windows 7 | OSZone | Microsoft Windows 7 | 0 | 29-12-2009 13:30 | |
Проверка защищенных файлов | SergOst | Microsoft Windows NT/2000/2003 | 11 | 15-10-2006 18:07 |
|