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

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

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

vu1tur (09-01-2011 11:53): лимит страниц, продолжение — http://forum.ru-board.com/topic.cgi?forum=62&topic=22143  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 17:45 04-09-2010 | Исправлено: Accessor, 18:04 28-09-2010
    wolf0425



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

    Цитата:
    wolf0425
    А зачем ему принтер подсовывать? Конечно будет тормозить,
    он сам подсовывается, когда диапазон IP сканируешь
    А как быстро отдетектить что на IP не комп, а более куцый девайс - в голову не приходит.
     

    Цитата:
    Плюс я обычно работаю с сетевыми именами, чего принтер лишен.  
    это ещё почему принтеры лишены имени?
    зарегистрировались в DHCP/DDNS  и получили, как все компы
    А те которые с тупыми статическими адресами - тех явно прописываю в DNS (чтоб было видно кем занят адрес)
     
    а один из MFU ещё и в домен просится со страшной силой

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 17:29 08-12-2010
    slech



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    спасибо, твой пример сработал, в моём случае несработало
     

    Цитата:
    SetLocal EnableDelayedExpansion
    set n=47
    set "mailsubject%n%=Subject: Your review was published by editor .* \."
    ::
    findstr /M /I /X /R /C:!mailsubject%n%! /F:%list% | find /I /C "msg" >%mailcountfile%
    ::
    set /p mailsubject%n%count=<%mailcountfile%

     
    Добавлено:

    Цитата:
    findstr /M /I /X /R /C:"!mailsubject%n%!" /F:%list% | find /I /C "msg" >%mailcountfile%

    всё сработало прекрасно, забыл ковычки указать.
    ещё раз спасибо.

    Всего записей: 4890 | Зарегистр. 10-11-2004 | Отправлено: 17:35 08-12-2010 | Исправлено: slech, 18:05 08-12-2010
    Ortios



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

    Цитата:
    А как быстро отдетектить что на IP не комп, а более куцый девайс

    Попробуй по значению TTL команды Ping.

    Всего записей: 73 | Зарегистр. 24-12-2007 | Отправлено: 20:07 08-12-2010
    slech



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

    Цитата:
    SetLocal EnableDelayedExpansion
    set n=2
    set test%n%=qwerty!
    echo !test%n%!

    а как можно обойти такую заcаду ?

    Всего записей: 4890 | Зарегистр. 10-11-2004 | Отправлено: 20:19 08-12-2010 | Исправлено: slech, 20:28 08-12-2010
    Ortios



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

    Цитата:
    а как можно обойти такую заcаду ?

    Да без проблем.

    Код:
    set n=2
    call set test%%n%%=qwerty!
    call call echo %%test%n%%%

    Всего записей: 73 | Зарегистр. 24-12-2007 | Отправлено: 20:53 08-12-2010
    wolf0425



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

    Цитата:
    Попробуй по значению TTL команды Ping.  
    мысль интересная, у всех проверенных железок ТТЛ действительно отличается от 128 (замеченные варианты 64 и 255)...

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 22:45 08-12-2010 | Исправлено: wolf0425, 22:46 08-12-2010
    res2001



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

    Цитата:
    Да без проблем.  

    что-то не работает твой вариант.
     
    slech

    Цитата:
    а как можно обойти такую заcаду ?

    Вот так вроде получается:

    Код:
    @echo off
    set n=2
    set test%n%=qwerty!
    set val=test%n%
    call echo %%%val%%%

     
    ЗЫ: А как на счет обхода qwerty% или qwerty^|&><? Всего не обойдешь.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 10:01 09-12-2010
    slech



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

    Цитата:
    что-то не работает твой вариант.

    у меня  всё сработало вот так

    Цитата:
    set n=01
    set "mailsubject%n%=Subject: your mail .* from site.com!"
    call call findstr /M /I /X /R /C:"%%mailsubject%n%%%" /F:%list% | find /I /C "msg" >%mailcountfile%
    set /p mailsubject%n%count=<%mailcountfile%

     

    Цитата:
    Вот так вроде получается:

    Спасибо, записал.
     

    Цитата:
    ЗЫ: А как на счет обхода qwerty% или qwerty^|&><? Всего не обойдешь.

    У меня в регулярных выражениях встречается пока лишь !
    [ ] \ ^ $ . | ? * + ( ) { } - это вроде пока не придвидится.

    Всего записей: 4890 | Зарегистр. 10-11-2004 | Отправлено: 12:12 09-12-2010 | Исправлено: slech, 12:13 09-12-2010
    xzGORzx

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте.
    Подскажите, возможно ли на бате совершать действия деления такие как эти: 3/2
    При выполнении такой он в ответе выдает мне только целые, а десятые "прячет".
    Как можно решить проблему?

    Всего записей: 11 | Зарегистр. 09-12-2010 | Отправлено: 13:09 09-12-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    xzGORzx
    В cmd поддерживаются только целочисленные арифметические операции со всеми вытекающими.
    Решить проблему можно, например тебе нужно 2 знака после запятой после деления (v=v1/v2)
    set /a v=v1*100/v2
    set /a vc=v/100
    set /a vo=v%%100
    получим в vc - целую часть в vo - дробную 2 знака после запятой.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 13:23 09-12-2010
    xzGORzx

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001,  
    Огромнейшее тебе спасибо!!!
    Теперь наконец-то допишу прогу, для решения квадратных уравнений.

    Всего записей: 11 | Зарегистр. 09-12-2010 | Отправлено: 13:41 09-12-2010
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    проблема практического свойства: есть два батника, в обоих есть обращение к wmic. Второй батник вызывается из первого с помощью call. Все это хозяйство упаковано Bat_To_Exe_Converter.exe в режиме скрытия окна консоли. На Windows XP вся эта конструкция зависает намертво в момент обращения второго батника к wmic. На Win7/Vista все работает. Самое интересное, что если все это упаковать  Bat_To_Exe_Converter.exe без скрытия консоли, все будет работать... Есть у кого соображения?
    Пс. Новая версия Bat_To_Exe_Converter.exe 1.5.1 ведет себя так же

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 14:08 09-12-2010
    bomzzz



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

    Цитата:
    Bat_To_Exe_Converter.exe 1.5.1

    не самая корректная программа

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 14:11 09-12-2010
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    зато единственная из мне известных на сегодняшний день, скомпилированные файлы которой не рубятся антивирусами. кстати версия 1,51 в этом плане стала только хуже. возможно из-за новой версии UPX
     
    Добавлено:
    А что можешь посоветовать? кроме изучения "нормального" языка программирования

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 14:19 09-12-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ничего не могу. ну устрой независимые испытания, для различных частей кода батника, методом исключения найди в чем ошибка, и перепиши батник так, чтоб он работал.  
     
    если у тебя батник содержит чета кроме самого батника то можно SFX архив сделать

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 14:25 09-12-2010
    Free_Soft



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

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

     
    испытания показали, что затык именно на wmic. если вызывается часть кода, где к нему нет обращения, все проходит хорошо. Кроме батника всего полно, но SFX - не айс, ибо неохота, чтоб в кишках копались

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 14:29 09-12-2010
    bomzzz



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

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 14:30 09-12-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Free_Soft
    Можно использовать для этих целей модифицированный sfx модуль для 7z, есть много настроек, можно запускать в тихом режиме и т.п.
    Антивирусы на него не срабатывают.
    Я сам не пользовался для упаковки батников этим способом, но юзал для других вещей.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 14:32 09-12-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    а если вызвать не CALL, а START че будит?
     
    Добавлено:
    res2001
    не он хатит чтоб у него код батника не украли

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 14:32 09-12-2010
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    проблема в том, что любой sfx можно открыть любым архиватором, и все содержимое будет как на ладони...

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 14:33 09-12-2010
       

    Страницы: 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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 9
    vu1tur (09-01-2011 11:53): лимит страниц, продолжение — http://forum.ru-board.com/topic.cgi?forum=62&topic=22143


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru