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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    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 - пинговать нужно недоступный адрес, причем однократно и с задержкой на полное время. Этот ввариант в общем-то и правильнее, но обычно все ленятся.

    Всего записей: 2930 | Зарегистр. 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. Как ей пользоваться?

    Всего записей: 861 | Зарегистр. 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 работает лучше. Всем спасибо.

    Всего записей: 861 | Зарегистр. 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 (задержка отрабатывается той же ситемной функцией, а вот кода в память грузится за время выполнения  - сильно меньше).

    Всего записей: 2930 | Зарегистр. 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  или нет ?

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



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Valdon
    А что это за ключ такой?
    Если пользуешься mstsc - стандартным терминальным клиентом виндов, то у него нет такого ключа.
     
    Добавлено:
    superman md
    Запускается Windows Loader.exe из папки с батником
    %~dp0"Windows Loader.exe" /silent /preactivate  
    Устанавливается текущим каталогом, каталог, где лежит батник
    cd %~dp0  
    В текущем каталоге снимаем атрибуты рид-онли, архивный, скрытый, системный со всех файлов
    attrib -R -A -S -H *.*  
    перезагружаем винду с таймером в 5 сек.
    SHUTDOWN /R /T 5  
    удаляем каталог "%WINDIR%\Setup\Scripts" со всем содержимым.
    RMDIR /S /Q "%WINDIR%\Setup\Scripts"

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 08:42 29-06-2011
    Valdon



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001, есть такой ключ, начиная с версии RDP 6.1 он заменен на /admin. Почитать можно  например, здесь или запусти  mstsc /?

    Всего записей: 430 | Зарегистр. 25-07-2005 | Отправлено: 09:23 29-06-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Valdon
    ага, это есть
    Кароче, есть переменная окружения %CLIENTNAME%.
    В случае когда заходишь в терминале с ключом /admin она либо не устанавливается, либо устанавливается в имя сервера на который заходишь (проверял на ВинХП и Вин2003). Когда заходишь без /admin переменная устанавливается в имя клиентского компа с которого заходишь.
    Вот так и различать.
    При этом, чтоб отличить что ты зашел именно через терминал, а не из консоли можно анализируя переменную %SESSIONNAME%, когда в терминале она равна "RDP-Tcp#NN", где NN - это порядковый номер текущей РДП сессии, если заходишь с консоли, то она равна "Console".

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 09:48 29-06-2011 | Исправлено: res2001, 10:08 29-06-2011
    FantoMax22

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всех приветствую!
     
    Помогите доделать батник. Основная часть есть:
     
    dsadd user "..."
    dsmod group  "..."
    dsmod user "..."
     
    Суть в том, чтобы при клике ярлыка батника открывалось окно командной строки, где будут воодится mac-адрес и следом описание. И нужно чтобы после ввода окно не закрывалось, а осталось для возможности ввести следующие данные.
     
    Спасибо!

    Всего записей: 8 | Зарегистр. 08-06-2011 | Отправлено: 10:41 29-06-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    FantoMax22
    Ввод в батнике делается через команду
    set /p in="Текст комментария"
    В переменной in - введенное значение. (см. set /?)
     
    Для организации цикла в начале поставь метку, типа этого
    :label
    а в конце переход на метку:
    goto :label
    см. goto /?

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 10:49 29-06-2011
    wolf0425



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

    Цитата:
     Когда заходишь без /admin переменная устанавливается в имя клиентского компа с которого заходишь.
    Вот так и различать.  
    странно, захожу вот на 2008/64 сервер без /admin - %CLIENTNAME% не определена.
     
    up: перезапустил FAR, из которого смотрел переменные - определена.
    причем SESSIONNAME=RDP-Tcp#0
     
    на соседнем 2003/32, где /admin по жизни - SESSIONNAME=RDP-Tcp#1
    а  %CLIENTNAME% тоже не определена

    Всего записей: 2930 | Зарегистр. 25-04-2007 | Отправлено: 10:53 29-06-2011 | Исправлено: wolf0425, 11:00 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-2025

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru