![]() |
Наличие текста с условиями
Друзья, здравствуйте.
Помогите пожалуйста, сам не могу сообразить. Необходимо написать код с следующими условиями: Есть текстовый файл Q:\TesT.txt, необходимо читать этот файл и если в нём есть текст "CLIENT_CODE", то - GOTO :1, а если данного текста в этом файле нет то GOTO :2 Подскажите пожалуйста, вообще не могу понять как это сделать. Спасибо! |
Код:
@Echo off Если делать дословно, как Вы требуете (мне GoTo не нравится), то можно так
Код:
@Echo off Код:
findstr /I /C:CLIENT_CODE Q:\TesT.txt >nul&&GoTo :1 Код:
@Echo off |
Или так:
Код:
@echo off |
Цитата:
Цитата:
Тут дело в том, что я полностью запутался в последовательностях Есть вот такой код: Код:
findstr /I /C:CLIENT_CODE Q:\error.lim >nul И смысл в том, чтобы эта схема работала по следующей последовательности: 1) Смотрим, существует ли на диске Q файл error.lim 1.1) Если файл есть, переходим к пункту 2 1.2) Если файла нет, то переходим к метке :FRMB 2) Читаем файл и ищем в нём строку "CLIENT_CODE" 2.1) Если строчка есть то переходим к пункту 3 2.2) Если строчки нет, то УДАЛЯЕМ ФАЙЛ, Отправляем почту *** При выгрузке всё ОК *** и переходим к той-же метке :FRMB 3) Отправляем почту *** При выгрузке произошли ошибки ***, перемещаем файл в директорию Q:\error\ и переименовываем файл под необходимое имя, после всего переходим к той-же метке :FRMB И вот в данном, конкретном моменте я заблудился, не могу понять, как правильно составить последовательность кода. Почта отправляется, файл перемещается и переименовывается, но последовательность нарушена, по этому программа работает не правильно. Огромное спасибо за помощь! |
На ваш код не смотрю, смотрю ваше описание алгоритма и последовательно его переписываю - не надо путаться, надо как в белорусском языке - как слышится, так и пишется :-)
Код:
@Echo off Программы mailsend1.18.exe у меня естественно нет, для отладки поставил на эту строку Echo, чтобы видеть что происходит. Вы Echo уберёте. Как и pause. Я не знаю, что такое %FD%_error-FORTS.lim%R%, поэтому заменил на имя с датой и временем при переносе-переименовании. |
Код:
@echo off Даже по сути и "& goto FRMB" не нужно, мы и так будем возвращаться в эту строку ":FRMB", которая тоже не нужна. |
Цитата:
Спасибо Цитата:
ВТОРОЙ ТРИЦИКЛ: если файл есть и соответствует условиям - перемещаем, сообщаем, если нет - удаляем, сообщаем. ТРЕТИЙ ТРИЦИКЛ: если файл есть и соответствует условиям - перемещаем, сообщаем, если нет - удаляем, сообщаем. Если данную логику не соблюдать, то файлы error.lim будут конфликтовать друг с другом. |
POSTREALITY,
Все в точности так и происходит, поставьте в подпрограммы свои нужные команды и убедитесь в этом. |
|
Цитата:
|
Цитата:
|
Цитата:
Но возникла другая проблема: капля в каплю продублировал Ваш код к себе в команду, но почему-то всегда отрабатывает :p2. Даже если вручную подсовываю в директорию текстовый файл error.lim и внутри пишу CLIENT_CODE, всё равно он идёт по второму пути, как будто ошибок нет. |
POSTREALITY, Не знаю, чем вам мог досадить EnableDelayedExpansion.
Вот вариант без EnableDelayedExpansion
Код:
@Echo off If Not Exist "%ErrorLim%" GoTo :Eof |
Цитата:
Теперь всё работает как надо! ЦМДшник получился на полтора листа формата А4 ))) |
Цитата:
|
Всем спасибо! Всё работает!
Тему можно закрывать! |
Время: 13:00. |
Время: 13:00.
© OSzone.net 2001-