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

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

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

vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 101 102 103 104 105 106 107 108

   

vu1tur



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

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
 
Для перекодирования кирилицы 866<—>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:53 09-01-2011 | Исправлено: mazafakermazafaka, 11:22 04-06-2011
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Привычка. Оно тебе мешает?
     
    Добавлено:
    Кстати:

    Цитата:
     
    -w Timeout : Specifies the amount of time, in milliseconds, to wait for the Echo Reply message that corresponds to a given Echo Request message to be received. If the Echo Reply message is not received within the time-out, the "Request timed out" error message is displayed. The default time-out is 4000 (4 seconds).  
     

    Это с сайта Microsoft-a, Windows XP Professional Product Documentation

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 10:46 28-06-2011
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    По поводу паузы в батнике, ping не лучший вариант, может работать некорректно.
    Pause.bat

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 12:04 28-06-2011
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Это тысячу раз обсуждалось. В большинстве случаев ping сработает. А вот если нет, тогда можно/нужно использовать альтернативные варианты.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 12:17 28-06-2011
    NIKZZZZ



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

    Цитата:
    В большинстве случаев ping сработает.

    Решение слишком не универсальное, например файрвол может влиять на это. Да и ping сетевая операция, он все-таки выполняется, хоть и на local host, и может мешать.
    В windows 7 удобнее использовать choice.exe, но к сожалению ее нет в XP.
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 12:57 28-06-2011
    Elroir



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

    Цитата:
    например файрвол может влиять на это

    А вот для этого я и вставляю в ping  ключ "-w"
    Все другие решения предполагают либо создание дополнительного файла/скрипта, либо использование сторонних утилит. И то и другое универсальным решением не назовешь.
    Всегда найдется система, где подобное решение неприемлемо.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 13:06 28-06-2011
    wolf0425



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

    Цитата:
    wolf0425
    Привычка. Оно тебе мешает?  
    меня оно озадачивает  - для формирования привычки должны быть какие-то причины. А вдруг мне это тоже надо?
     
    NIKZZZZ
    Цитата:
     Решение слишком не универсальное, например файрвол может влиять на это.
    с кривыми или параноидальными - может, но с нормальными настройками  - не влияет.
    И ping localhost - рекомендованная микрософтом ступенька проверки корректности работы IP.
    на случай, когда фаерволом ICMP обращения с локалхоста на локалхост зачем-то запрещены - есть альтернативный вариант ключей - ping 127.255.255.255 -n 1 -w 1000
     

    Цитата:
    Да и ping сетевая операция, он все-таки выполняется, хоть и на local host, и может мешать.  
    это рассуждение о сферической лошади в вакууме или ты можешь привести реальный пример корректных настроек винды, когда пинг - действительно мешает?
     
     

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 13:16 28-06-2011 | Исправлено: wolf0425, 13:19 28-06-2011
    res2001



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

    Цитата:
    Решение слишком не универсальное

    Решение есть и по универсальней и по правильней:
    ping -n 1 -w 1000 127.255.255.255
    Пингуем заведомо не существующий адрес для того чтобы пинг ответ не приходил никогда, тогда срабатывает опция -w.
     
     
    Добавлено:
    Кстати, если пинговать 127.0.0.1, то при получении ответа пинг не ждет до окончания тайм-аута, а сразу возвращает результат.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 13:23 28-06-2011
    Elroir



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

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

    Вот теперь я всмомнил откуда она у меня появилась. Достаточно давно я пользовался Agnitum Outpost Firewall, так вот он, как раз, по умолчанию запрещал ответы на ping.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 13:50 28-06-2011
    wolf0425



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

    Цитата:
    Достаточно давно я пользовался Agnitum Outpost Firewall, так вот он, как раз, по умолчанию запрещал ответы на ping.
    Кстати говоря - кривость страшная, и сам Agnitum и его дефолтовая реализация стелсмоды с правилом  запрещать пакеты, идущие с локалхоста на локалхост (правило приходилось всегда править, и вовсе не ради пингов).
     

    Цитата:
     Кстати, если пинговать 127.0.0.1, то при получении ответа пинг не ждет до окончания тайм-аута, а сразу возвращает результат.
    вот-вот, в варианте насмерть запрещенного ICMP вышепроцитированный озадачивший меня ping -n 6 -w 1000 127.0.0.1 > nul  дает 11-секундную задержку, а не ожидаемую 5-секундную.
    вывод: если уж не лень прописывать -w NNNN - пинговать нужно недоступный адрес, причем однократно и с задержкой на полное время. Этот ввариант в общем-то и правильнее, но обычно все ленятся.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 14:25 28-06-2011 | Исправлено: wolf0425, 16:43 28-06-2011
    res2001



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

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

    согласен

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 14:37 28-06-2011
    RSEREGAR



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

    Цитата:
    Решение слишком не универсальное, например файрвол может влиять на это. Да и ping сетевая операция, он все-таки выполняется, хоть и на local host, и может мешать.
    В windows 7 удобнее использовать choice.exe, но к сожалению ее нет в XP.  

    Не знаю такую команду. У меня win7 есть в сети и win XP и win 7. Как ей пользоваться?

    Всего записей: 709 | Зарегистр. 26-10-2008 | Отправлено: 16:16 28-06-2011
    NIKZZZZ



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

    Код:
    > nul choice.exe /t 10 /d y

     
     
    Добавлено:
    wolf0425

    Цитата:
    ты можешь привести реальный пример корректных настроек винды, когда пинг - действительно мешает?  

    Забивать гвозди мелкоскопом тоже можно, но зачем без нужды решать задачу через задницу?

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 16:36 28-06-2011
    res2001



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

    Цитата:
    Забивать гвозди мелкоскопом тоже можно, но зачем без нужды решать задачу через задницу?  

    Дык другого варианта как-бы и нет в ВинХР, чтоб на чистом бате и чтоб работало в системе по умолчанию. Понятно, что вот в Вин7 появился чойс, им конечно это решать лучше, но не универсально.  
    Да и пинг это далеко не мелкоскоп
    pause.bat - нормальный вариант, но требует создания дополнительного файла, к тому же полученный test.com - утилита для DOS. А куча строчек в батнике с кракозябрами выглядит страшновато  
    Если и создавать временный файл, я бы предпочел сделать скрипт на JS/VBS с вызовом wscript.sleep(), можно даже в батник интегрировать. Правда cscript порой долго грузится.
     
    В общем идеальных решений нет.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 17:32 28-06-2011
    NIKZZZZ



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

    Цитата:
    В общем идеальных решений нет.

    Так хочется решить задачу корректно, тем более достаточно простую (но слишком сложную для Microsoft)
    Тем более не хочется жрать ресурсы, хотя на это уже давно все плюют.
     
     
     
    Добавлено:

    Цитата:
    Понятно, что вот в Вин7 появился чойс, им конечно это решать лучше

    Так этот "чойс" был в win2k

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 17:46 28-06-2011
    res2001



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

    Цитата:
    Так этот "чойс" был в win2k  

    Нету его в Вин2к (у меня есть машина с практически чистым вин2к про).
    Он был помнится в ДОСе, в Вин95 тож был, а вот дальше уже не знаю.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 18:13 28-06-2011
    RSEREGAR



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

    Код:
    @echo off  
    :checkLoop
    ping -n 1 host | find /i "ttl=" >nul && goto runProgram  
    goto checkLoop
    :runProgram
    choice /t 120 /d y
    psexec \\host progam  

    На Windows 7 работает лучше. Всем спасибо.

    Всего записей: 709 | Зарегистр. 26-10-2008 | Отправлено: 18:15 28-06-2011
    Elroir



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

    Цитата:
    Так этот "чойс" был в win2k  

    Задача-то (в идеале) - сделать так, чтобы работало на всех системах.
    Кстати, choice "вернулся" в систему, только в Windows 2003 Server.
    В WinXP и Win2000 его нет - надо ставить Resource Kit.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:21 28-06-2011 | Исправлено: Elroir, 18:24 28-06-2011
    wolf0425



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

    Цитата:
     Забивать гвозди мелкоскопом тоже можно, но зачем без нужды решать задачу через задницу?  
    где же через задницу то?
    готовая, всегда присутствующая (и компактная) утилита командной строки с документированной настройкой задержки времении до миллисекунды, в варианте пингования 127.255.255.255 ничего лишнего не делающая - это куда менее "через задницу" чем создание и запуск комфайла из батника или запуск из того же батника vbs интерпретатора.
    так что в условиях возможного отсутствия в системе "правильного" choise - ping попросту наилучший выбор для генерации пауз.
    к тому же работающий на старых машинах точнее чем вызов vbs (задержка отрабатывается той же ситемной функцией, а вот кода в память грузится за время выполнения  - сильно меньше).

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 18:46 28-06-2011 | Исправлено: wolf0425, 18:48 28-06-2011
    superman md



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужна помощь с активатором Windows Loader by Daz хочу добавить его в образ, подскажите его правильный запуск из setupcomplete.cmd чтобы при наличии слика, он ставил только сертификат и ключ, если такое возможно...
    От автора приписан вот такой setupcomplete.cmd, объясните исполняемые команды.  

    Код:
    @ECHO OFF
    %~dp0"Windows Loader.exe" /silent /preactivate
    cd %~dp0
    attrib -R -A -S -H *.*
    SHUTDOWN /R /T 5
    RMDIR /S /Q "%WINDIR%\Setup\Scripts"
    exit


    ----------
    Нахожусь в очень сложном финансовом положении.
    Буду очень благодарен, если у вас найдется для меня занятие, которое поможет мне хоть немного заработать на дому!

    Всего записей: 1205 | Зарегистр. 27-06-2010 | Отправлено: 23:07 28-06-2011
    Valdon



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, как в терминальной сессии (RDP 6.0) из батника узнать запущена ли она с ключом /console  или нет ?

    Всего записей: 428 | Зарегистр. 25-07-2005 | Отправлено: 00:02 29-06-2011
       

    Страницы: 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 101 102 103 104 105 106 107 108

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 10
    vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru