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

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

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

vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:54 27-04-2007 | Исправлено: Elroir, 03:59 10-09-2007
    presston



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте.  
     
    У меня такая проблемка. Есть удаленный Ip ххх.ххх.ххх.ххх
     
    Мне нужно его пинговать 1 раз в 10 секунд ( не чаще) на наличие сети.
    Подскажите как засунуть это в бат файл) спасибо

    Всего записей: 9 | Зарегистр. 13-05-2007 | Отправлено: 19:43 13-05-2007
    igor_andreev

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

    Цитата:
    Вопрос: от куда берется лишняя буква "t" в расширении файла в переменных %~s0 и %~snx0 ???

    Не смог у себя изобразить такое Короткие имена включал-выключал, перезагружался... А если *.bat переименовать в *.cmd, то показывает *.cmdd?

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 20:04 13-05-2007
    Elroir



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

    Цитата:
    Не смог у себя изобразить такое

    Вот и у меня не получилось . Я тоже экспериментировал, но такого не добился.
     
    Добавлено:
    presston

    Код:
     
    @echo off
    :try
    ping -n 1 ххх.ххх.ххх.ххх | find /i "TTL=">nul
    if %errorlevel%==0 (
    echo Working
    ) else (
    echo Not working
    )
    ping -n 11 -w 1000 127.0.0.1>nul
    goto try
     
     

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 20:12 13-05-2007 | Исправлено: Elroir, 20:16 13-05-2007
    wolf0425



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

    Цитата:
    Не смог у себя изобразить такое Короткие имена включал-выключал, перезагружался...

    воспроизведи точно путь, по которому лежит батник - "D:\totalcmd\Utilites\Create SFX\архив\"
    добавление циферок к имени "архив" не мешает воспроизведению бага, убираю из слова одну буковку - повторяться перестает. мистика.
     
    ps: xp eng sp2, NTFS, короткие имена включены.
     
     
    Добавлено:

    Цитата:
    А если *.bat переименовать в *.cmd, то показывает *.cmdd?

    да, а как ты догадался?
    влияния имени/расширения батника на воспроизведение бага не обнаружено

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 21:04 13-05-2007 | Исправлено: wolf0425, 21:14 13-05-2007
    trigliff

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как гарантированно запустить сетевое подключение? Иногда получается так, что rasdial отрабатывает, а подключение не запустилось. Тут его запустить бы ещё разок, да только некому

    Всего записей: 576 | Зарегистр. 10-01-2003 | Отправлено: 21:40 13-05-2007
    presston



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

    Цитата:
    @echo off  
    :try  
    ping -n 1 ххх.ххх.ххх.ххх | find /i "TTL=">nul  
    if %errorlevel%==0 (  
    echo Working  
    ) else (  
    echo Not working  
    )  
    ping -n 11 -w 1000 127.0.0.1>nul  
    goto try

     
     
    пасиба) а можно расписать чуть подробнее? (т.е. что для чего мы делаем)
     
     
     

    Всего записей: 9 | Зарегистр. 13-05-2007 | Отправлено: 21:42 13-05-2007
    igor_andreev

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

    Цитата:
    воспроизведи точно путь

    Точно, не подумал.

    Цитата:
    xp eng sp2, NTFS, короткие имена включены.  

    Аналогично
     
    Прикольнейший глюк, есть над чем подумать. Он с таким путем не понимает почему-то свое собственное короткое имя(%~sx0), выдает полное. Должно быть A7BA~1.CMD(если "преобразование переменных.cmd") или 4FAB~1.BAT(если "преобразование переменных.bat")
     

    Цитата:
    да, а как ты догадался?

    А сталкивался однажды с похожим написанием, у меня одна переменная пропадала. В похожей конструкции
    %%~sx0    = %~sx0
    у мну хитрый батник самовольно брал то, что между жирными знаками процента и издевался надо мной. Но там команда у меня SET фигурировала, здесь что-то похожее, но не то. Даже если все знаки "=" поубирать - глючит. Берется последняя буква расширения (~-1) и прибавляется, а в каком месте еще не понял.

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 22:02 13-05-2007 | Исправлено: igor_andreev, 22:09 13-05-2007
    NIKZZZZ



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

    Код:
    @echo off
    setlocal
    set flag=No
    :_1
    rasdial соединение
    for /f "tokens=1* delims=" %%a in ('ipconfig ^| find "соединение"') do set "Flag=Yes"
    if %Flag%=No goto _1

     
    соединение - имя соединения.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 22:06 13-05-2007
    Elroir



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

    Цитата:
    а можно расписать чуть подробнее?

    Можно
    1. @echo off - не показыватю запускаемые команды
    2. :try - метка для возврата
    3. ping -n 1 ххх.ххх.ххх.ххх | find /i "TTL=">nul - пингуем адрес и проверяем прошел ли пинг  
    4. if %errorlevel%==0 ( - если прошел (проверяем код возврата)  
    5. echo Working  - выводим "Working"
    6. ) else (  - если нет
    7. echo Not working  - выводим "Not working"
    )  
    8. ping -n 11 -w 1000 127.0.0.1>nul  - пауза 10 сек. Пингуем свой комп 11 раз - примерно 10 сек.
    9. goto try - возвращаемся к метке "try"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:20 13-05-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Смог повторить глюк с
    D:\New Folder\New Folder\f sfx\test\преобразование переменных.bat
    D:\oops\test  test\p sfx\test test\преобразование переменных.bat
    ...
    Кажется cmd.exe в определенных сочетаниях коротких имен не очень нравятся идущие после пробела в пути буквы sfx, он оттуда откуда-то последнюю букву расширения (~x) прихватывает.

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 22:34 13-05-2007
    presston



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

    Цитата:
    8. ping -n 11 -w 1000 127.0.0.1>nul  - пауза 10 сек. Пингуем свой комп 11 раз - примерно 10 сек.

     
     
    вот она фишка) понял. а можно еще как-то включить в код что количество потерь показывало .. там раз в 3 минуты (для радио сети)
     
    пасиба большое!

    Всего записей: 9 | Зарегистр. 13-05-2007 | Отправлено: 22:41 13-05-2007
    Elroir



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

    Цитата:
    а можно еще как-то включить в код что количество потерь показывало .. там раз в 3 минуты (для радио сети)

    Немножко не понял - показывать сколько раз пинг не прошел?
    Раз в 3 минуты что происходит?

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:44 13-05-2007
    trigliff

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ, спасибо.
    Извиняюсь за свою наглость, но есть ещё вопрос.
    А можно как-то туда ещё паузу вставить минут на 20 после не удачной попытки соединения? Вечерами бывает при реконнекте сессия не корректно завершается и висит у прова минут 15-30 с выдачей ошибки 691.

    Всего записей: 576 | Зарегистр. 10-01-2003 | Отправлено: 22:49 13-05-2007
    presston



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

    Цитата:
    Немножко не понял - показывать сколько раз пинг не прошел?  
    Раз в 3 минуты что происходит?

     
    ну да. сколько пингов было потеряно .. или сколько пакетов. хоть какую-то статистику
     

    Всего записей: 9 | Зарегистр. 13-05-2007 | Отправлено: 23:09 13-05-2007
    NIKZZZZ



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

    Код:
    @echo off
    setlocal
    set flag=No
    :_1
    rasdial соединение
    for /f "tokens=1* delims=" %%a in ('ipconfig ^| find "соединение"') do set "Flag=Yes"
    if %Flag%=No (
      ПАУЗА
      goto _1
    )

     
    ПАУЗА - некая команда, обеспечивающую задержку. Например sleep.exe , nircmd.exe wait , советовать не хочу, выбор широкий - выбирай, что нравится.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 00:48 14-05-2007 | Исправлено: NIKZZZZ, 00:50 14-05-2007
    Elroir



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

    Код:
     
    @echo off
    setlocal
    set "sent=0"
    set "lost=0"
    :try  
    ping -n 1 127.0.0.1 | find /i "TTL=">nul  
    if %errorlevel%==0 (  
    echo Working  
    ) else (
    set /a "lost+=1"
    echo Not working  
    )
    set /a "sent+=1"
    ping -n 11 -w 1000 127.0.0.1>nul
    set /a "show=%sent% %% 18"
    if %show%==0 echo Sent %sent% pings, lost %lost%
    goto try
     

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



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо!!

    Всего записей: 9 | Зарегистр. 13-05-2007 | Отправлено: 14:08 14-05-2007
    Gabzya



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

    Цитата:
    это как?!? п и П - русские, кодировка батника в редакторе 1251?  

    да... сам в шоке

    Всего записей: 1149 | Зарегистр. 14-12-2004 | Отправлено: 17:40 14-05-2007
    wolf0425



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

    Цитата:
    да... сам в шоке

    повторить не получается.
    может кинешь пару примеров имен файлов, переименованных неправильно?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 18:19 14-05-2007
    xy



    ХУдератор
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрые люди, знаю точно что скрипты тут такие уже обсуждались, но ткните носом на конкретный плииз
     
    Нужно запускать батник с 1 параметром
    параметр - папка
    в этой папке батник просматривает все файлы и подпапки и каждый не-зип файл (определять по расширению) запаковывает в зип (типа имя.ещеимя.раширение -> имя.ещеимя.раширение.zip)
     
    можно с логом %)
     
    заранее огромное спасибо!!

    ----------
    Счастливые мысли приводят к счастливой клеточной биохимии

    Всего записей: 10530 | Зарегистр. 28-05-2003 | Отправлено: 18:25 14-05-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

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


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru