|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Наличие текста с условиями |
|
|
CMD/BAT - [решено] Наличие текста с условиями
|
Новый участник Сообщения: 39 |
Друзья, здравствуйте.
Помогите пожалуйста, сам не могу сообразить. Необходимо написать код с следующими условиями: Есть текстовый файл Q:\TesT.txt, необходимо читать этот файл и если в нём есть текст "CLIENT_CODE", то - GOTO :1, а если данного текста в этом файле нет то GOTO :2 Подскажите пожалуйста, вообще не могу понять как это сделать. Спасибо! |
|
Отправлено: 15:58, 20-05-2016 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать @Echo off cls findstr /I /C:CLIENT_CODE Q:\TesT.txt >nul If %Errorlevel%==0 ( Echo Yes ) Else ( Echo No ) pause Если делать дословно, как Вы требуете (мне GoTo не нравится), то можно так
@Echo off cls findstr /I /C:CLIENT_CODE Q:\TesT.txt >nul If %Errorlevel%==0 GoTo :1 GoTo :2 :1 Echo Yes GoTo :Eof :2 Echo No GoTo :Eof ИМХО, GoTo :2 и вовсе не нужно, можно написать со следующей строки код, который Вы хотите написать после метки :2, после GoTo :1 @Echo off cls findstr /I /C:CLIENT_CODE Q:\TesT.txt >nul&&GoTo :1 :2 Echo No GoTo :Eof :1 Echo Yes GoTo :Eof |
------- Последний раз редактировалось megaloman, 20-05-2016 в 16:38. Отправлено: 16:13, 20-05-2016 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 17:13, 20-05-2016 | #3 |
Новый участник Сообщения: 39
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Цитата alpap:
Тут дело в том, что я полностью запутался в последовательностях Есть вот такой код: findstr /I /C:CLIENT_CODE Q:\error.lim >nul ТУТ ВАШИ ОТВЕТЫ НА МОЙ ПЕРВЫЙ ВОПРОС if exist Q:\error.lim ( mailsend1.18.exe *** При выгрузке произошли ошибки *** ) else ( mailsend1.18.exe *** При выгрузке всё ОК *** ) if exist Q:\error.lim ( move /Y Q:\error.lim Q:\error\ && rename "Q:\error\error.lim" %FD%_error-FORTS.lim%R% ) else ( goto :FRMB ) И смысл в том, чтобы эта схема работала по следующей последовательности: 1) Смотрим, существует ли на диске Q файл error.lim 1.1) Если файл есть, переходим к пункту 2 1.2) Если файла нет, то переходим к метке :FRMB 2) Читаем файл и ищем в нём строку "CLIENT_CODE" 2.1) Если строчка есть то переходим к пункту 3 2.2) Если строчки нет, то УДАЛЯЕМ ФАЙЛ, Отправляем почту *** При выгрузке всё ОК *** и переходим к той-же метке :FRMB 3) Отправляем почту *** При выгрузке произошли ошибки ***, перемещаем файл в директорию Q:\error\ и переименовываем файл под необходимое имя, после всего переходим к той-же метке :FRMB И вот в данном, конкретном моменте я заблудился, не могу понять, как правильно составить последовательность кода. Почта отправляется, файл перемещается и переименовывается, но последовательность нарушена, по этому программа работает не правильно. Огромное спасибо за помощь! |
||
Отправлено: 17:59, 20-05-2016 | #4 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать На ваш код не смотрю, смотрю ваше описание алгоритма и последовательно его переписываю - не надо путаться, надо как в белорусском языке - как слышится, так и пишется :-)
@Echo off cls Set "ErrorLim=Q:\Error.lim" Set "Code=CLIENT_CODE" Set "ErrDir=Q:\Error" SetLocal EnableExtensions EnableDelayedExpansion If Exist "%ErrorLim%" ( findstr /I /C:"%Code%" "%ErrorLim%" >nul If !Errorlevel!==0 ( Move "%ErrorLim%" "%ErrDir%\%Date%_%Time::=%_error-FORTS.lim" >nul Echo mailsend1.18.exe *** При выгрузке произошли ошибки *** ) Else ( Del "%ErrorLim%" Echo mailsend1.18.exe *** При выгрузке всё ОК *** ) ) :FRMB pause Программы mailsend1.18.exe у меня естественно нет, для отладки поставил на эту строку Echo, чтобы видеть что происходит. Вы Echo уберёте. Как и pause. Я не знаю, что такое %FD%_error-FORTS.lim%R%, поэтому заменил на имя с датой и временем при переносе-переименовании. |
|
------- Последний раз редактировалось megaloman, 20-05-2016 в 21:06. Отправлено: 21:00, 20-05-2016 | #5 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать @echo off if exist "Q:\error.lim" <"Q:\error.lim">nul findstr/ic:"CLIENT_CODE" && call :p1 || call :p2 :FRMB echo:Продолжение основной программы exit :p1 echo:Отправляем почту *** При выгрузке произошли ошибки ***,& goto FRMB exit/b :p2 echo:УДАЛЯЕМ ФАЙЛ, Отправляем почту *** При выгрузке всё ОК ***,& goto FRMB exit/b Даже по сути и "& goto FRMB" не нужно, мы и так будем возвращаться в эту строку ":FRMB", которая тоже не нужна. |
Последний раз редактировалось alpap, 20-05-2016 в 21:20. Отправлено: 21:13, 20-05-2016 | #6 |
Новый участник Сообщения: 39
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Спасибо Цитата alpap:
ВТОРОЙ ТРИЦИКЛ: если файл есть и соответствует условиям - перемещаем, сообщаем, если нет - удаляем, сообщаем. ТРЕТИЙ ТРИЦИКЛ: если файл есть и соответствует условиям - перемещаем, сообщаем, если нет - удаляем, сообщаем. Если данную логику не соблюдать, то файлы error.lim будут конфликтовать друг с другом. |
||
Отправлено: 20:59, 25-05-2016 | #7 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать POSTREALITY,
Все в точности так и происходит, поставьте в подпрограммы свои нужные команды и убедитесь в этом. |
Отправлено: 22:10, 25-05-2016 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 07:25, 26-05-2016 | #9 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 09:58, 26-05-2016 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] проверка наличие определенного текста в файлах | shmel_sv@vk | Скриптовые языки администрирования Windows | 11 | 15-07-2015 11:15 | |
CMD/BAT - Удаление папок с условиями | Bukinozoid | Скриптовые языки администрирования Windows | 2 | 30-05-2012 22:31 | |
CMD/BAT - Как проверить наличие текста в файле | mamont1 | Скриптовые языки администрирования Windows | 6 | 16-09-2010 16:32 | |
CMD/BAT - Проверка на наличие какого-то текста | Magniy | Скриптовые языки администрирования Windows | 4 | 20-04-2010 18:26 |
|