Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 2

Модерирует : KLASS, IFkO

vu1tur (27-04-2007 11:55): продолжаем в теме «Задачи на bat-файлах 3»  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

   

vu1tur



Moderator-Saaber
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Задачи на bat-файлах (часть 1)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки
 
Полезные утилиты
 
Готовые решения и частые вопросы:
  • Встроенный справочник по командам
  • Создание помощи по всем командам консоли 2000 и XP
  • Альтернативные решения »
  • Работа с текстом, датой, и файлами »
  • Администрирование, автоматизация и сеть »
  • Работа с переменными и параметрами ком. строки »
     
    Описания работы команд и символов участниками темы:
    · setlocal enabledelayedexpansion и переменные окружения
    · символы & и && в командной строке
    · Переменная %0
     
    Невозможности — что нельзя сделать с помощью командных файлов:
    · изменть конфигурацию IP на удаленной машине (без помощи rcmd.exe) [добавил ALEF]
     
    Старая версия первого сообщения

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 16:59 14-11-2006 | Исправлено: Elroir, 04:30 26-04-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Wise_Kaa

    Цитата:
    Скажи, а что значат 2>&1? это ведь какие-то условия?

    Это не условие. Это перенаправление стандартного потока ошибок (stderr=2) в стандартный выход (stdout=1).
     
    Добавлено:
    Nagual

    Цитата:
    есть некоторый сайт с динамическим IP, необходимо постоянно проверять его доступность, а также проверять наличие соединения с интернетом локальной машины,

    Э... чего-то я не понимаю. Где здесь проверка на доступность? И где проверка соединения с интернетом локальной машины?

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:03 04-01-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir

    Цитата:
    Э... чего-то я не понимаю. Где здесь проверка на доступность? И где проверка соединения с интернетом локальной машины?

    Ну проверка сайта делается трассировкой, может есть и другие варианты, жду предложений
    а проверка соединения с инетом локальной машины неплохо бы прикрутить (не нашел пока как)
    и, если не сложно, проверь, что там с проверками команд на ошибки, я в этом еще не шибко силен, а то работает, но не совсем так, как задумано…
    спасибо

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 03:56 04-01-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    1. Errorlevel относится к последней запущенной команде - в приведенном тобой коде, это будет результат выполнения команды "chcp 1251".
    2. Зачем переключаться туда-сюда с кодировками? Ставишь в начало батника chcp 1251 и (если надо) в конце chcp 866.
    3. Проверка на доступность сайта:

    Код:
     
    :check
    ..
    tracert www.site.com
    if not %errorlevel%==0 goto _delaycheck
    :_delay
    ..
    goto check
    :_delaycheck
    ..
    :update
    ..
    goto check
     

    Я специально пропустил goto _delay и goto update - они не нужны.
    Вопрос - зачем ты делаешь "Пауза поиска сайта... " и "Пауза обновления IP... " ?
     
    4. Насчет проверки соединения с интернетом - какое у тебя подключение? Прямое или через раутер? Какой IP выдает команда ipconfig, когда есть подключение и когда его нет?

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 04:28 04-01-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Спасибо за отклик
    1. так и подумал, будем знать
    2. кодировками и паузами пытался достичь наглядности работы кода для отладки
    3. спс, тестирую
    Цитата:
    Я специально пропустил goto _delay и goto update - они не нужны.
    торопился, да можно и без них
    Цитата:
    Вопрос - зачем ты делаешь "Пауза поиска сайта... " и "Пауза обновления IP... " ?
    чтобы успеть увидеть, что эти команды выполняются
    4. прямое vpn
    ipconfig при вкл соед:
    Код:
    [Имя адаптера] - PPP адаптер:
     
    DNS-суффикс этого подключения . . :
    IP-адрес  . . . . . . . . . . . . . . : ххх.ххх.ххх.ххх
    Маска подсети . . . . . . . . . . : 255.255.255.255
    Основной шлюз . . . . . . . . . : ххх.ххх.ххх.ххх
    ipconfig при выкл соед:
    пустота

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 04:51 04-01-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual

    Цитата:
    ipconfig при выкл соед:  
    пустота

    Ну тогда проверка будет примерно такой:

    Код:
     
    ipconfig | find "IP">nul
    if not %errorlevel%==0 (echo Not connected) else (echo Connected)
     


    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 04:57 04-01-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    огромный спс

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 05:44 04-01-2007
    Wise_Kaa



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir Спасибо за предыдущее пояснение. Не объяснишь еще почему не отрабоатывает: Переменной l ничего не присваивается.

    Цитата:
    set l=%~z1


    Всего записей: 59 | Зарегистр. 04-01-2006 | Отправлено: 10:54 04-01-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Wise_Kaa
     

    Цитата:
    Не объяснишь еще почему не отрабоатывает: Переменной l ничего не присваивается.  


    Цитата:
    "set l=%~z1" но ведь размер файла не есть кол-во символов. По два байта отводится на переход на новую строку. Кстати, команда почему-то не работае . z1 - это что? и для чего тильда?

    1. См For /?
    2.
    Код:
    for %a in (*.jpg) Do Echo %a %~za


    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 11:30 04-01-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Wise_Kaa

    Цитата:
    Переменной l ничего не присваивается

    Имелось в виду, что название файла передается батнику как аргумент командной строки. Тогда это название записывается в переменную %1. Ты, видимо запускал батник без аргумента , поэтому в %1 ничего не подставлялось. "Тильда что-то" (~n,~x,~z,..) - это модификатор, который добавляется к переменным типа %а или %%а. Список модификаторов можно получить запустив For /? (как написал KapralBel).  


    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:09 04-01-2007
    Smitis



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Wise_Kaa
    Открой справку - файл ntcmds.chm в папке windows\help
    Раздел: Справочник по параметрам командной строки\ Основные понятия \Использование пакетных файлов - там три подраздела как раз об использовании параметров, фильтров и перенаправлении потоков ввода/вывода.

    Всего записей: 3179 | Зарегистр. 09-02-2003 | Отправлено: 16:35 04-01-2007 | Исправлено: Smitis, 16:37 04-01-2007
    Sceval



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    а как после выполнения bat-файла закрыть cmd
    мой батник запускает прграмму и висит черный экран, он только закрываеться когда закрываеться программа а как сделать что бы после выволнения он сам закрывался
    а прога продолжала работать
    пробывал
     

    Цитата:
     ......    goto exit  
    :exit
    exit

     
    не выходит

    Всего записей: 134 | Зарегистр. 22-12-2005 | Отправлено: 19:00 04-01-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Sceval

    Цитата:
    а как сделать что бы после выволнения он сам закрывался  
    а прога продолжала работать  

    Запускай программу командой start:

    Код:
     
    start c:\program\program.exe
     

    Посмотри start /?.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 19:09 04-01-2007
    Sceval



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir  спасиба разобрался





    для спасибов — ПМ

    Всего записей: 134 | Зарегистр. 22-12-2005 | Отправлено: 09:50 05-01-2007 | Исправлено: vu1tur, 01:46 06-01-2007
    Wise_Kaa



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir, спасибо за разъяснения, если имя, как аргумент передается, все работает.  
    Smitis уже читаю, спасиб.
     

    Всего записей: 59 | Зарегистр. 04-01-2006 | Отправлено: 14:45 05-01-2007
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Как написать батник такого содержания: Пропинговать компьютеры в локальной сети, если например какой-либо компьютер не пингуется, то в ini файле удаляется строка с IP адресом этого компьютера (Адреса в ini файле уже прописаны).

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 09:52 06-01-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka
    Какой формат у ini файла?
     
    Добавлено:
    Есть ли список всех адресов локалки? Если нет, тогда напиши IP и Netmask.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 16:36 06-01-2007
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    Какой формат у ini файла?  
     
    Добавлено:  
    Есть ли список всех адресов локалки? Если нет, тогда напиши IP и Netmask.

     
    Да всё просто, самый обыкновенный ini файл, строки, которые нужно будет удалять (если удалёный комп не пингуется) будут выглядеть так: "SetVideoFolderPath=\\192.168.0.1\d\Video\Films" и так до 10-го компа...Нужна команда которая будет удалять эту строку  

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 17:45 06-01-2007 | Исправлено: Maza Faka, 17:48 06-01-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka
    В ini только такие строчки?
    Если там есть еще что-нибудь - это проблема. Из батника невозможно редактировать файл - можно читать и записывать. То есть сценарий такой - читаешь строчку из ini файла, проверяешь пингом, записываешь в другой файл. После того, как проверил все - удалаешь старый ini файл и переименовываешь новый.
    Еще вопрос - адреса идут по порядку (192.168.0.1,192.168.0.2,..,192.168.0.10)?

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:11 06-01-2007
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    Еще вопрос - адреса идут по порядку (192.168.0.1,192.168.0.2,..,192.168.0.10)?

    Да, по порядку!

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 18:27 06-01-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka
    А на первый вопрос ответить не судьба?

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:30 06-01-2007 | Исправлено: Elroir, 22:58 06-01-2007
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 2
    vu1tur (27-04-2007 11:55): продолжаем в теме «Задачи на bat-файлах 3»


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru