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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    DamiRocK



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Приветствую сенсеев командной строки...
    Прошу помочь с созданием батника, который бы в своём действии выключал и включал определенный драйвер. Это нужно мне, ибо постоянно после гибернации/сна компьютер отключает HDMI выход и звук по нему не передаётся до тех пор, пока я не выключу и включу драйвер вручную...  
    http://img811.imageshack.us/img811/9701/20101026122653.jpg
    Если эту задачу можно упростить с помощью одного bat-файла - было бы просто замечательно. Подскажите, какие данные для драйвера нужно предоставить, чтобы составить такой батник?
    Заранее благодарен за содействие

    Всего записей: 25 | Зарегистр. 22-02-2009 | Отправлено: 12:28 26-10-2010 | Исправлено: DamiRocK, 12:28 26-10-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    DamiRocK
    Есть утилита у мелкософта devcon, которая позволяет работать с устройствами из командной строки.
    У меня на ноуте такая же байда была со звуком, devconом вылечил.

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Уважаемый, wolf0425!
    Вы мне подсказывали код
    @echo off  
    chcp 1251  
    1>nul find "ДАТА ФОРМИРОВАНИЯ ФАЙЛА" <file.txt && exit  
    1>>file.txt echo.ДАТА ФОРМИРОВАНИЯ ФАЙЛА: %date%
     
    а если мне надо просто определенную строку заменить на строку с датой, это можно сделать?
    т.е найти строку содержащую например слово Тогда и заменить его тогда 26.10.2010 (системную дату)
     
    Подскажите, пожалуйста
     
    Добавлено:
    или кто сможет

    Всего записей: 13 | Зарегистр. 20-10-2010 | Отправлено: 13:06 26-10-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BagaBaga, а что там считать колонками? в смысле - пробелы в начале строк - так и задуманы?
    наверно как-то так:
    sed -r -i "s;^( *[^ ]*)(  *)([^ ]*);\3\2\1;gi" file1.txt
     
     
    Добавлено:
    Romanchikprivet
    Цитата:
    а если мне надо просто определенную строку заменить на строку с датой, это можно сделать?  
    можно, вопрос в деталях - например можно ли использовать дополнительные программы или нужно обходиться тем, что есть в системе.
    с помощью sed.exe замена делается тривиально:
     

    Код:
    @echo off  
    chcp 1251  
    1>nul find "ДАТА ФОРМИРОВАНИЯ ФАЙЛА" <file.txt || 1>>file.txt echo.ДАТА ФОРМИРОВАНИЯ ФАЙЛА: %date%
    sed -r -i "s;^(ДАТА ФОРМИРОВАНИЯ ФАЙЛА:)(.*)$;\1 %date%;gi" file.txt
     
    если строки нет - она приписывается. Если строка есть - хвост всех строк, начинающихся с текста "ДАТА ФОРМИРОВАНИЯ ФАЙЛА:" заменяется на текущую дату

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 13:16 26-10-2010 | Исправлено: wolf0425, 17:39 26-10-2010
    Romanchikprivet

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    а что такое sed.exe?
     
     
    без него нельзя обойтись тем что имеется в системе?

    Всего записей: 13 | Зарегистр. 20-10-2010 | Отправлено: 13:30 26-10-2010
    bomzzz



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

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 13:39 26-10-2010
    Romanchikprivet

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz, подскажи где ее скачать

    Всего записей: 13 | Зарегистр. 20-10-2010 | Отправлено: 13:45 26-10-2010
    wolf0425



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

    Цитата:
    без него нельзя обойтись тем что имеется в системе?
    можно, наверно, но писать потребуется сильно больше и ограничения по содержимому файла моментально появятся.
     
    скачать - сверху ссылка в "Полезные утилиты": (даже две - в UnxUtils он тоже входит)
    Ну или яндекс в помощь.
     

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 14:04 26-10-2010 | Исправлено: wolf0425, 14:06 26-10-2010
    Romanchikprivet

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425, скачал не работает почему-то...

    Всего записей: 13 | Зарегистр. 20-10-2010 | Отправлено: 14:05 26-10-2010
    wolf0425



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

    Цитата:
    скачал не работает почему-то...
    если качал с "официального" сайта - то наверняка библиотеки забыл.  
    в UnxUtils - версия, работающая без левых библиотек, но старая.

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 14:09 26-10-2010 | Исправлено: wolf0425, 14:09 26-10-2010
    BagaBaga

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

    Цитата:
    BagaBaga, а что там считать колонками?

     
    Есть первая колонка - содержит цифры и (возможно) несколько пробелов перед ними. Цифры могут быть целые или с плавающей точкой. Пробелы впереди определяются форматом (вывода софтины), фактически, для удобства - чтобы визуально выровнять разряды.
    Вторая и третья колонки - аналогично.
     
    PS
    приведенный код не выдает ни чего. В выоде - пусто.

    Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 14:19 26-10-2010
    Romanchikprivet

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Говорит неправильный параметр i

    Всего записей: 13 | Зарегистр. 20-10-2010 | Отправлено: 14:23 26-10-2010
    bomzzz



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

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



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

    Цитата:
    приведенный код не выдает ни чего. В выоде - пусто.
    приведенный код сразу патчит файл, если нужен вывод то  
    sed -r "s;^( *[^ ]*)(  *)([^ ]*);\3\2\1;gi" <file1.txt  
     
     
    Добавлено:
    Romanchikprivetкак я понял, ты старый sed скачал, где такого ключика -i ещё не было, а на UnxUpdates.zip, где sed поновее - там кажись ссылка уже мертвая :(
    так что или обновляй sed - UnxUpdates я выложил на http://zalil.ru/29871119
     
    или подправь батник:

    Код:
     
    @echo off  
    chcp 1251  
    1>nul find "ДАТА ФОРМИРОВАНИЯ ФАЙЛА" <file.txt || 1>>file.txt echo.ДАТА ФОРМИРОВАНИЯ ФАЙЛА: %date%
    sed -r "s;^(ДАТА ФОРМИРОВАНИЯ ФАЙЛА:).*$;\1 %date%;gi" <file.txt  >file2.txt  && move /y file2.txt file.txt
     

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 14:41 26-10-2010 | Исправлено: wolf0425, 17:40 26-10-2010
    Romanchikprivet

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    С параметром i не работает
    Удалил временно параметр i вот такие результаты  
    Если в файле нет фразы он добавляет без проблем.
    Если есть фраза ничего не происходит
     
     
    Добавлено:
    Все равно не работает....
    Пишет sed: -e  expression #1, char 49: Invalid reular expression

    Всего записей: 13 | Зарегистр. 20-10-2010 | Отправлено: 14:56 26-10-2010
    wolf0425



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

    Цитата:
    Пишет sed: -e  expression #1, char 49: Invalid reular expression
    смайлик влез при копировании, поправил

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 17:39 26-10-2010
    Romanchikprivet

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425, снова пристаю с вопросом. Батник заработал, но он все строчки превращает в одну и все пробелы заменяет квадратиком, что это может быть?

    Всего записей: 13 | Зарегистр. 20-10-2010 | Отправлено: 08:57 27-10-2010
    Saymer

    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Возник вопрос, искал, но конкретно не не нашел, и решил спросить тут.
     
    Нужен батник, при запуске которого искались бы определенные файлы (по имени) и папки на всех дисках, в т.ч. на скрытых и удалялись. Без запроса на удаление.  
    Т.е. расположение файлов не известно, ни буква диска, ни папка. Известно только название.
    Ну примерно такие папки "Мегафон отчет", "Detalizacia", "Nachislenia_abonentov".
     
    Вот собственно, а как должен выглядить этот батник?
     
    Пробовал в cmd написать  del /F /S /A:*111*.* (111 создал файл проверить) ругается на имя после A:
     
    Прошу помощи в создании этого батника.

    Всего записей: 23 | Зарегистр. 06-02-2008 | Отправлено: 13:05 27-10-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    через FOR это надо делать.
     
    Добавлено:
    ECHO OFF
    COLOR 9F
    CLS
    PUSHD C:\
    FOR /R %%I IN (.) DO (
    IF EXIST "%%I\MYFILE.TXT" ECHO %%I
    )
    pause
     
    этот батник ищет на диске С файл MYFILE.TXT и найдя выбает в какой он папки. ну и так далее

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 13:18 27-10-2010
    wolf0425



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

    Цитата:
    Батник заработал, но он все строчки превращает в одну и все пробелы заменяет квадратиком, что это может быть?
    sed то у тебя какой версии, в итоге?
    почему "превращает в одну" - я наверно понял, это у тебя редактор не понимает юниксовых переводов строк, а sed - v 4.0.7. ниже вариант, это лечащий.  
    а про пробелы - как-то и идей нет. напиши строку, которую у тебя батник портит (и версию sed) - хоть посмотрю.
     

    Код:
    @echo off  
    chcp 1251  
    1>nul find "ДАТА ФОРМИРОВАНИЯ ФАЙЛА" <file.txt || 1>>file.txt echo.ДАТА ФОРМИРОВАНИЯ ФАЙЛА: %date%
    sed -r "s;^(ДАТА ФОРМИРОВАНИЯ ФАЙЛА:).*$;\1 %date%;gi" <file.txt  |more >file2.txt  && move /y file2.txt file.txt  

    Всего записей: 2920 | Зарегистр. 25-04-2007 | Отправлено: 13:41 27-10-2010 | Исправлено: wolf0425, 13:42 27-10-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