v1s
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Всех с наступающим, глупые вопросы тут задавать можно? Сразу извиняюсь, если что. Итак, следующая команда: Код: echo off & for /L %G in () do (timeout /T 2 > nul & ping -n 1 -w 1000 8.8.8.8 | find "TTL" && color || (echo Error!!! & color CA & timeout /T 1 > nul & color 1C & timeout /T 1 > nul & color CA)) | прекрасно работает в консоли, но при сохранении ее в виде cmd-файла (с добавлением лишнего знака процента перед переменной в for, разумеется, %%G) начинает, по крайней мере так это выглядит, игнорировать условия и выдавать что-то в стиле Код: Ответ от 8.8.8.8: число байт=32 время=65мс TTL=106 Error!!! Ответ от 8.8.8.8: число байт=32 время=64мс TTL=106 Error!!! | с сопутствующим изменением цветов. То есть, find "TTL" выполняется, но потом всё равно почему-то идет часть || (echo Error!!! & color CA & timeout /T 1 > nul & color 1C & timeout /T 1 > nul & color CA), как если бы && color завершался с ошибкой. При этом, если в ветке для успешного выполнения find "TTL" указать для color аргумент (&& color 07), все работает отлично. Соответственно, вопрос - почему так? Color без аргументов при вызове из консоли и из файла ведет себя по-разному, выдавая во втором случае Errorlevel, отличный от нуля? Гуглить пытался, но без толку. Честно говоря, даже не представляю, что именно гуглить... по крайней мере, насчет разного поведения color в cmd-файлах и в консоли ничего не нашел. | Всего записей: 270 | Зарегистр. 12-02-2006 | Отправлено: 02:25 31-12-2018 | Исправлено: v1s, 02:30 31-12-2018 |
|