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

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

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

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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 16:59 14-11-2006 | Исправлено: Elroir, 04:30 26-04-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    tomegadeth
    В названии может быть только "mar" или любой другой месяц? Если да, будут ли называться похоже (три первых буквы)? Меняется ли первое слово (Dongle)?

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



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

    Всего записей: 560 | Зарегистр. 22-11-2004 | Отправлено: 14:18 05-03-2007
    Tipulatoid



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

    Код:
    @echo off
    setlocal enabledelayedexpansion
     
    for /f "tokens=*" %%a in ('dir "Dongle - Report_*.pdf" /b') do call :rename "%%a"
    goto end
     
    :rename
    for /f "tokens=2-4 delims=_." %%a in (%1) do (
      set chislo=%%a
      set month=%%b
      set year=%%c
      if /i !month!==jan set nmonth=01
      if /i !month!==feb set nmonth=02
      if /i !month!==mar set nmonth=03
      if /i !month!==apr set nmonth=04
      if /i !month!==may set nmonth=05
      if /i !month!==jun set nmonth=06
      if /i !month!==jul set nmonth=07
      if /i !month!==aug set nmonth=08
      if /i !month!==sep set nmonth=09
      if /i !month!==oct set nmonth=10
      if /i !month!==nov set nmonth=11
      if /i !month!==dec set nmonth=12
      ren "Dongle - Report_!chislo!_!month!_!year!.pdf" "DailyReport_!year!!nmonth!!chislo!.pdf"
    )
    goto :eof
     
    :end

     
    Добавлено:
    Немного изменил - теперь корректнее батник себя ведет

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 14:47 05-03-2007 | Исправлено: Tipulatoid, 15:11 05-03-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Tipulatoid
    Я пожалуй пойду погуляю
    Или... "мы пойдем другим путем":
     
    tomegadeth
    Вот мой вариант:

    Код:
     
    @echo off  
    setlocal enabledelayedexpansion  
    set "jan=01"&set "feb=02"&set "mar=03"&set "apr=04"&set "may=05"&set "jun=06"  
    set "jul=07"&set "aug=08"&set "sep=09"&set "oct=10"&set "nov=11"&set "dec=12"  
    for %%a in (*.pdf) do call :ren_part "%%a"
    goto :EOF
    :ren_part
    set "old_name=%~n1"
    ren "%~1" "DailyReport_%old_name:~-4%!%old_name:~19,3%!%old_name:~16,2%.pdf"
     

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:19 05-03-2007
    tomegadeth



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

    Цитата:
    'dir "Dongle - Report_*.pdf" /b'
    - согласен - так корректнее.
     
     

    Всего записей: 560 | Зарегистр. 22-11-2004 | Отправлено: 15:30 05-03-2007
    Smitis



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Tipulatoid
    Elroir
    А я бы просто сделал подряд несколько команд замены

    Код:
     
    set fname=%fname:jan=01%
    set fname=%fname:feb=02%
    и т.д.
     


    Всего записей: 3215 | Зарегистр. 09-02-2003 | Отправлено: 15:37 05-03-2007
    Tipulatoid



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

    Цитата:
    Я пожалуй пойду погуляю

    Руку я набиваю в батникописательстве А ваш код короче - значит лучше. Только, ИМХО,
    Цитата:
    for %%a in (*.pdf) do call :ren_part "%%a"
     - все PDF-ы не совсем правильно брать, лучше по маске только те что нужны.
    tomegadeth
    Пожалуйста

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 15:43 05-03-2007
    tomegadeth



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    а так даже лучше оригинальное решение!
    Спасибо!
     
    Добавлено:
    вот так, и порядок:

    Цитата:
    for %%a in ("Dongle - Report_*.pdf") do call :ren_part "%%a"  


    Всего записей: 560 | Зарегистр. 22-11-2004 | Отправлено: 16:04 05-03-2007
    Elroir



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

    Цитата:
    все PDF-ы не совсем правильно брать, лучше по маске только те что нужны

    Согласен - конечно, так правильнее.

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



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Интересует такой момент: Есть программа date.exe из комплекта UnxUtils, при её запуске в командной строке (Например: date.exe +"%a") на экране появляеться "сокращенние" текущего дня недели (Например: Mon)... А теперь вопрос к уважаемым знатокам можно ли вывод команды date.exe +"%a" направить в переменную %WD% внутри bat файла...  Зарание благодарю...

    Всего записей: 21 | Зарегистр. 22-12-2005 | Отправлено: 18:49 05-03-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ну видимо так и будет for /f %%a in ('date.exe +"%a"') do set "WD=%%a"
     
    P.S. Лучше не пользуйся ею, бо может конфликтануть-перепутаться с виндовой системной командой DATE. У майкрософт для вывода полной даты и времени своя утилита есть, now.exe, лежит во всех ресурс китах, начиная с Win NT, с 19-какого-то-лохматого года. Вот(zip, 18,4Kb) из 2003 Resource Kit Tools. У нее вот так вытаскивается день недели:
    for /f "tokens=1" %%a in ('now') do set "weekday=%%a"
    Можно пользоваться вместо ECHO для логов:
    NOW start backup>arc.log
     
    P.P.S. Если совсем "аццкие" возможности по работе с датой-временем нужны, то юзать curtime32 http://www.saboteur.com.ua/ftp/index.html
     
    В принципе в PATH для полностью комфортной работы с датой-временем достаточно иметь эти две, now.exe и curtime32.exe, все остальное - от лукавого(а я много всякого перепробовал)
     
    Добавлено:
    Кстати, давайте в шапке сделаем ссылку, типа "Консольные утилиты, которые можно использовать в бат-файлах"? У меня скупая мужская слеза скатывается по щеке, когда я вижу там только ссылки на cmdow, blat да unixtools Я бы там набросал линков всяких немного, хотя бы утилит на 100-200, которых нет в стандартной поставке Windows, а они must have и существенно улучшают командную строку винды.

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 19:05 05-03-2007 | Исправлено: igor_andreev, 19:34 05-03-2007
    yurkesha



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

    Цитата:
    Кстати, давайте в шапке сделаем ссылку, типа "Консольные утилиты, которые можно использовать в бат-файлах"
    полность поддерживаю! Только если уж на то пошло то придется создать еще паралельную тему в варезнике - некоторые утиля совсем не бесплатны... К тому же стоит наверное озаботится не только консольными, но и вообще утилитами допускающими работу через командную строку - например тот же UltraISO... Вобщем готов поучаствовать.  Как вариант одной утилиты предлагаю:
    cdbflite - работа с dbf из командной строки

    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 20:12 05-03-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    Поддерживаю идею с утилитами. Часто они очень сильно облегчают жизнь.
     
    yurkesha

    Цитата:
    Только если уж на то пошло то придется создать еще паралельную тему в варезнике - некоторые утиля совсем не бесплатны

    Главное, я думаю, дать информацию, а где скачать крэк или серийник - люди разберутся

    Цитата:
    cdbflite - работа с dbf из командной строки

    Как вариант... Думаешь много людей работатют с dbf?

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



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кто нить сталкивался с запуском звукового файла из сценария?
    Исходные данные: винда, в основном XP, звуковой файл wav, сценарий.
    Задача, как вы, наверное, догадались, проиграть звуковой файл системными средствами без запуска каких либо диалоговых окон.

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 22:02 05-03-2007 | Исправлено: Nagual, 22:03 05-03-2007
    igor_andreev

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

    Цитата:
    Задача, как вы, наверное, догадались, проиграть звуковой файл системными средствами без запуска каких либо диалоговых окон.
    Без диалоговых окон - это консоль. Консольного плейера в стандартной поставке Windows нет. Спроси, где взять - скажу
     
    Системными средствами можно без диалоговых окон vbscript-ом только, в основном разные вариации запуска mplayer2.exe, mplay32.exe или через %WINDIR%\System32\Msdxm.ocx или через Internet Explorer. Еще %WINDIR%\msagent\chars\merlin.acs умеет играть *.wav
     
    Добавлено:
    Elroir

    Цитата:
    Думаешь много людей работатют с dbf?

    Немного и нечасто. Но по закону подлости, когда они нужны - фих найдешь По себе знаю, тут на ru-board кто-то однажды спросил консольную конвертилку dbf в csv или txt, ну я линк дал(натыкался на нее), подошло. Но себе не оставил утилиту за ненадобностью. А когда самому один-единственный раз понадобилось - не смог собственное сообщение найти

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 23:19 05-03-2007
    ViSiToR



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

     
    Nagual
     

    Цитата:
    без запуска каких либо диалоговых окон

     
    Есть утилита WacCommand - предназначена для управления Winamp'ом из командной строки (это конечно не системными средставми, но зато если есть Winamp, очень удобно из батника им управлять).
     
    igor_andreev

    Цитата:
    Еще %WINDIR%\msagent\chars\merlin.acs умеет играть *.wav

    А можно его попросить об этом из батника?
     

    Цитата:
    давайте в шапке сделаем ссылку, типа "Консольные утилиты, которые можно использовать в бат-файлах"?

    Двумя руками ЗА!

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 00:49 06-03-2007
    Elroir



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

    Цитата:
    Но по закону подлости, когда они нужны - фих найдешь  

    Знаю такое - я так тоже несколько раз попадался. Знаю что было где-то, но вот где...
    Просто я думаю, что в шапке должны быть утилиты, которые используются часто и многими. Но это, конечно, IMHO.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:00 06-03-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    интересен вариант с merlin.acs
    сторонними утилами, да еще которые запускают комбайн винампа, это не то
    онли стандартные средства, господа

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 01:04 06-03-2007
    igor_andreev

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

    Цитата:
    А можно его попросить об этом из батника?

    Можно, но как обычно, через написание tmp.vbs.  
    Nagual
    Я вот с ним и разбирался сейчас, не хочет поганец проигрывать на домашнем ноуте. Подозреваю, что ему наверно TTS Engine еще для этого нужен, который дома не установлен. Или у меня с аудио-устройствами что-то. Завтра на работе посмотрю, там все есть и все работает стопудово. Примеров скриптов полный гугль Попробуй так

    Код:

    On Error Resume Next
    aCHAR = "merlin"
    Set ACTL = CreateObject("Agent.Control.2")
    ACTL.Connected = True
    ACTL.Characters. Load aCHAR, aCHAR & ".acs"
    If Err.Number <> 0 Then Wscript.Quit
     
    Set CREF = ACTL.Characters(aCHAR)
        CREF.Show
        CREF.Get "WaveFile", "disk:\path\file.wav"
        CREF.Speak "Hi! I'ts test", "disk:\path\file.wav"
     
    Set objRequest = CREF.Hide
    Do Until objRequest.Status=Complete: Wscript.Sleep 200 :Loop
    Wscript.Quit


    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 01:27 06-03-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    не сработало, идет только анимация и текст, однако, неплохой способ оповещать о чем-либо юзеров

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 01:36 06-03-2007 | Исправлено: Nagual, 01:42 06-03-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 100

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


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru