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

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

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

vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 109 110 111 112 113 114 115 116 117

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:37 26-05-2009 | Исправлено: TechnicsKuzya, 13:53 27-12-2009
    ALEKCEN



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как устанавливать что-либо из .inf файла по средствам .bat (.cmd) файла ?
     
    Нужно установить дрова\проги из .inf файла (уже готовые),но не знаю как это прописать в батник,подскажите плиз,как.  
    И ещё,подскажите где найти инфу,как создать свой .inf файл,что в нём должно содержаться и т.д. и т.п.
     
    Ах да,надо не одну установку,а несколько.  
    И да,ещё хотелось-бы узнать,как это делается в WinRar`е,7-zip`е.

    Всего записей: 687 | Зарегистр. 08-04-2008 | Отправлено: 19:00 21-12-2009 | Исправлено: ALEKCEN, 20:50 21-12-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ALEKCEN тебе надо запустить стандартный гуевый инсталлятор или что-то более хитрое?
     
    если в ассоциациях никто не копался то start "" drova.inf  

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 19:16 21-12-2009
    ALEKCEN



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Данный способо не прокатил - он просто открывает .inf файл.
     
    Немного подробнее,что я хочу сделать - есть готовые .inf файлы - их запускаешь (правой кнопкой-установить) всё в ажуре,всё устанавливается,но мне надо сделать тоже самое,только из командной строки.

    Всего записей: 687 | Зарегистр. 08-04-2008 | Отправлено: 20:43 21-12-2009 | Исправлено: ALEKCEN, 20:49 21-12-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ALEKCEN
     
    start "" /dc:\ c:\setup.exe c:\file.inf

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 20:59 21-12-2009
    GORA2



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

    Цитата:
    Как устанавливать что-либо из .inf файла по средствам .bat (.cmd) файла ?


    Код:
    rundll32 advpack,LaunchINFSection MyNameInf.inf,DefaultInstall,0

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 21:05 21-12-2009
    mugil_cephalus

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

    Код:
    for /f "tokens=3" %%i in ('subst ^|find /i "%DataDrive%\scripts\test"') do if /i "_%%i" neq "_%DataDrive%\scripts\test" subst x: %DataDrive%\scripts\test
    subst
    pause

    не пойму,  - почему не работает ??
     
    листинг (subst не существует) :
    G:\scripts\test>for /F "tokens=3" %i in ('subst |find /i "G:\scripts\test"') do if /I "_%i" NEQ "_G:\scripts\test" subst x: G:\scripts\test
     
    G:\scripts\test>subst
     
    G:\scripts\test>pause
    Для продолжения нажмите любую клавишу . . .
     
    --------------------------
    в противном случае (если subst существует (X:\: => G:\scripts\test)), отработка нормальная:
     
    G:\scripts\test>for /F "tokens=3" %i in ('subst |find /i "G:\scripts\test"') do if /I "_%i" NEQ "_G:\scripts\test" subst x: G:\scripts\test
     
    G:\scripts\test>if /I "_G:\scripts\test" NEQ "_G:\scripts\test" subst x: G:\scripts\test
     
    G:\scripts\test>subst
    X:\: => G:\scripts\test
     
    G:\scripts\test>pause
    Для продолжения нажмите любую клавишу . . .
     
    p.s.
    скрипт с другим синтаксисом создать то можно, не пойму где ошибся в этом скрипте ??
     
     
    вопрос снят - вроде нашел ошибку: в цикле перременная %%i итератора принимает пустое значение, т.к. вывод команды итерации пуст и, следовательно, оператор не отрабатывает

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 21:32 21-12-2009 | Исправлено: mugil_cephalus, 15:03 22-12-2009
    ALEKCEN



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

    Цитата:
    rundll32 advpack,LaunchINFSection MyNameInf.inf,DefaultInstall,0

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

    Всего записей: 687 | Зарегистр. 08-04-2008 | Отправлено: 21:42 21-12-2009 | Исправлено: ALEKCEN, 21:45 21-12-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    надо избиратьтельно прибить все теги в неправильном месте, оставив в остальных
    строки в файле примерно такие:
    ^(тут оставить как есть)</small>(тут прибить теги <br> и любые другие)</DL>$
     
    Есть идеи как это попроще объяснить sed, не перечисляя все возможные теги?

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 23:03 21-12-2009 | Исправлено: wolf0425, 23:06 21-12-2009
    Umboking

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

    Цитата:
    Помогите решить такую задачу - необходимо проверить в папке XX наличие папки XXX, если папка XXX присутствует, то удалить все файлы из XXX, скопировать все файлы без расширения в папку XXX из XX. Если папки XXX в папке XX нет, то создать папку XXX создать флаг-файл и скопировать все фалы без расширений из XX в XXX.

    Собственно для меня здесь вся заковыка в том - как отличить папку от файла с таким же именем без расширения. Можно решить?

    Всего записей: 31 | Зарегистр. 21-12-2009 | Отправлено: 23:55 21-12-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Umboking например так if exist xx\xxx\nul echo xxx - папка

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 00:31 22-12-2009 | Исправлено: wolf0425, 00:32 22-12-2009
    Umboking

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

    Цитата:
    например так if exist xx\xxx\nul echo xxx - папка

    Спасибо! Про nul то я и забыл    
    Однако "например" предполагает как минимум ещё один вариант, какой?  

    Всего записей: 31 | Зарегистр. 21-12-2009 | Отправлено: 05:01 22-12-2009 | Исправлено: Umboking, 05:34 22-12-2009
    wolf0425



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

    Цитата:
    Однако "например" предполагает как минимум ещё один вариант, какой?  

    ну хотя бы такой dir /b /ad xx\xxx 1>nul 2>nul && echo xxx - папка

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 06:45 22-12-2009
    alexcoolmagic

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите, как с помощью findstr найти подряд десять минусов? findstr [-]{10} a.txt не работает
    неужели только так: findstr [-][-][-][-][-][-][-][-][-][-] a.txt    ?

    Всего записей: 54 | Зарегистр. 20-08-2002 | Отправлено: 10:18 22-12-2009 | Исправлено: alexcoolmagic, 11:13 22-12-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alexcoolmagic
    а есть какой-нибудь help/manual по findstr - почитал бы, -  а то в ntcmds.chm и/или findstr /? - почти нет толковых примеров?

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 14:00 22-12-2009
    wolf0425



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

    Цитата:
    подскажите, как с помощью findstr найти подряд десять минусов?
    А чем тривиальный findstr /c:"----------" a.txt не устраивает?

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 14:01 22-12-2009
    mouser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    %0 - возвращает путь запускаемого файла и сам файл ... как чтоб вернул исключительно название запускаемого bat файла?

    Всего записей: 800 | Зарегистр. 10-11-2006 | Отправлено: 14:35 22-12-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mouser
    %~n0 или %~nx0
    см. call /?
     
    Добавлено:
    wolf0425

    Цитата:
    а есть какой-нибудь help/manual по findstr - почитал бы, -  а то в ntcmds.chm и/или findstr /? - почти нет толковых примеров?  

    особенно бы почитать примеры по  
    Краткая сводка по синтаксису регулярных выражений:
      .         Любой символ.
      *         Повтор: ноль или более вхождений предыдущего символа или класса
      ^         Позиция в строке: начало строки
      $         Позиция в строке: конец строки
      [класс]   Класс символов: любой единичный символ из множества
      [^класс]  Обратный класс символов: любой единичный символ из дополнения
      [x-y]     Диапазон: любые символы из указанного диапазона
      \x       Служебный символ: символьное обозначение служебного символа x
      \<xyz    Позиция в слове: в начале слова
      xyz\>    Позиция в слове: в конце слова

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 14:52 22-12-2009
    alexcoolmagic

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

    Цитата:
    А чем тривиальный findstr /c:"----------" a.txt не устраивает?  

    да надо было найти или строку из минусов, или такое: --> или такое: <-> или число со знаком процента, потому пришлось использовать регуляры
     
    ну вот и заметил, что стандартный регуляр навроде [-]{10} не работает
     
    Добавлено:

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

     
    ну так и погугли по регулярным выражениям

    Всего записей: 54 | Зарегистр. 20-08-2002 | Отправлено: 21:55 22-12-2009
    Umboking

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

    Цитата:
    ну хотя бы такой dir /b /ad xx\xxx 1>nul 2>nul && echo xxx - папка

    Класс! Никогда бы не догадался так dir использовать    Спасибо!
     
    Добавлено:
    wolf0425

    Цитата:
    dir /b /ad xx\xxx 1>nul 2>nul && echo xxx - папка

    Я вот одно не пойму - а зачем xx\xxx 1>nul 2>nul? Почему не xxx 1>nul? Если бы батник запускался из какой-то папки xxxx в которой xx\xxx, тогда да, а если из xx, то не сработает, нет? И ещё - можно как-то && заменить на несколько команд через '(' ?  Можно конечно и несколько команд через && прописать, но не нравятся мне длинные строки.

    Всего записей: 31 | Зарегистр. 21-12-2009 | Отправлено: 01:17 23-12-2009
    wolf0425



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

    Цитата:
    Я вот одно не пойму - а зачем xx\xxx 1>nul 2>nul? Почему не xxx 1>nul?
    потому что если папки нет - ругнется в stderr "File Not Found"

    Цитата:
    И ещё - можно как-то && заменить на несколько команд через '('
    Можно конечно и несколько команд через && прописать, но не нравятся мне длинные строки.
    неправильный у тебя эстетизм какой-то - длинная строка, представляющая законченную функциональную связку - сильно удобнее нескольких последовательных срок (делающих то же самое). например ее быстрее закомментарить для отладки батника, в ней тяжелее потерять что-то при бэкапе куска кода...
    строки с if - ты так же маньячно разбиваешь на три для укорочения?
    Но если очень хочется извращаться - на здоровье.

    Код:
    dir /b /ad xx\xxx 1>nul 2>nul  
    if not errorlevel 1 (
     echo xxx - папка
    )
    замена && на if годится для данного примера, а вообще говоря неуниверсально, оно же c && - симпатичнее
    Код:
    dir /b /ad xx\xxx 1>nul 2>nul  && (
     echo xxx - папка
    )
    А вообще - выше первый пример был с if exist  - так это было наименее глючно и наиболее быстро...
     
    btw, посмотрел я свой последний батник... 71 строка кода (из них 6 пустых) в сумме ~3кб. Среднюю длину строк сам посчитаешь?
    строк, не укладывающихся в ширину окна ФАРа (93 символа) - 12 штук, разрезать на операторы именно их - не получится А остальные как раз читаются нормально.
     
    еще 40 строк (2кб) конфига в хвосте, и уже больше пары килобайт логов там же. а, еще в комплекте мелкий дополнительный файлик (для sed)  - без него было бы на пару строк больше. Вот такой монстрик. а ты говоришь && эстетику портят

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 10:22 23-12-2009 | Исправлено: wolf0425, 11:19 23-12-2009
       

    Страницы: 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 109 110 111 112 113 114 115 116 117

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 7
    vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru