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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR

    Цитата:
    Так что, так никто и не знает решения проблемы которую я создал

    Как-то я проглядел тогда твой пост.

    Код:
     
    %SystemRoot%\System32\rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 %~f1
     

    Используешь полный путь к .inf файлу.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:17 24-11-2006 | Исправлено: Elroir, 17:06 24-11-2006
    Maza Faka



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

    Цитата:
    Во-первых, присмотрись к постам которые идут чуть ниже чем приведённый пост by Elroir (и посмотри надпись в шапке темы после слова Важно

     
    Никуя не получается! Покажи на этом примере:
    Цитата:
    как в батнике можно удалить в файле %windir%\system32\sysoc.inf все HIDE?

     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 16:51 24-11-2006
    ViSiToR



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

    Цитата:
    Покажи на этом примере:

    Неужели всё так сложно?
     

    Код:
    @echo off
    :: Create the assembler program, by Herbert Kleebauer
    echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=> %temp%.\sbs2.com
    echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU!WvX0GwUY Wv;ovBX2Gv0ExGIuht6>> %temp%.\sbs2.com
    echo ?@}IKuNWpe~Fpe?FNHlF?wGMECIQqo{Ox{T?kPv@jeoSeIlRFD@{AyEKj@>> %temp%.\sbs2.com
    echo iqe~1NeAyR?mHAG~BGRgB{~H?o~TsdgCYqe?HR~upkpBG?~slJBCyA?@xA>> %temp%.\sbs2.com
    echo LZp{xq`Cs?H[C_vHDyB?Hos@QslFA@wQ~~x}viH}`LYNBGyA?@xAB?sUq`>> %temp%.\sbs2.com
    echo LRy@PwtCYQEuFK@A~BxPtDss@fFqjVmzD@qBEOEenU?`eHHeBCMs?FExep>> %temp%.\sbs2.com
    echo LHsPBGyA?@xAunjzA}EKNs@CA?wQpQpKLBHv?s`WJ`LRCYyIWMJaejCksl>> %temp%.\sbs2.com
    echo H[GyFGhHBwHZjjHeoFasuFUJeHeB?OsQH[xeHCPvqFj@oq@eNc?~}Nu??O>> %temp%.\sbs2.com
    echo ~oEwoAjBKs?Zp`LBzHQzyEFrAWAG{EFrAqAGYwHTECIQ{coKIsaCsf{Oe~>> %temp%.\sbs2.com
    echo CK}Ayre~CNFA{rAyEKFACrA{EKGAjbA}eKGSjNMtQFtc{OAyDGFj?{FDGQ>> %temp%.\sbs2.com
    echo KAjNVk_OCAx@e?f{o?CosI}1EGizhljJ~H1ZeG}JBA~rACBMDGjjDG@g0>> %temp%.\sbs2.com
    :: Use the program
    copy /y "%windir%\system32\sysoc.inf" "%windir%\system32\sysoc.inf.bak"
    %temp%.\sbs2.com 0 "HIDE" """" < "%windir%\system32\sysoc.inf" > "%windir%\system32\sysoc.inf"
    :: Delete the program
    del %temp%.\sbs2.com

     
    Заметь, я выделил строку, которая делает резервную копию этого файла (на всякий пожарный ).
     
    Elroir

    Цитата:
    Используешь полный путь к .inf файлу.

    Спасибо, попробую...
     
     
    Добавлено:
    Elroir
    Если не трудно, вот залил файл с архивом, там файл плюс dll'ка которая относится к этому файлу, также прикрепил батник который должен установить этот файл, посмотри плиз, будет ли работать у тебя, я уже как не пробовал, но не устанавливается и всё. Просто выдаётся сообщение - "Установа не выполнена". Может это у меня что то на компе, хотя при обычном запуске через конекстное меню всё устанавливается   ...
     
    P.S
    Этот файл предназначен для устаовки дополнительных компонентов в меню SendTo (Send To Extensions), он походу был сделан для Win95 (или 98), хотя неплохо работает и в XP, может из за этого он плохо устанавливается батником... он очень просто деинсталлируется (из “Установка и удаление программ”), так что можно не боятся устанавливать , и к тому же, очень неплохое расширение, имхо.

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 17:00 24-11-2006
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    После изменения "sendtox.inf" на ".\sendtox.inf" все работает.
    Ты видимо меня не понял, а я не выделил:

    Код:
     
    rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 %~f1
     

    В %1 добавлен модификатор ~f.

    Цитата:
    и к тому же, очень неплохое расширение, имхо

    Согласен. Жалко, что иконки не 32-х битные

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 17:42 24-11-2006 | Исправлено: Elroir, 17:47 24-11-2006
    Kirillhome



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    А теперь я себе голову сломал...
     
    Имеется некий список файлов (в данном случае - mp3-файлы)
    Имена файлов имеют в качестве первых двух символов уникальные нумераторы.
    Хочется сделать архивы (для каждого файла - свой). Написал батник:

    Код:
     
    @echo off
    if !%1!==!! GOTO :ERR1
    setlocal enabledelayedexpansion
    Set tek_path=%~dp0
    PUSHD "%1%"
    for %%f in (*.mp3) do (
        Set F_Name=%%f
        set Name_arh=!F_Name:~0,2!
        rar a -m3 -ep -rr3p -v100m -t -- "%tek_path%!Name_arh!" "%%f")
    POPD
    setlocal disabledelayedexpansion
    GOTO :EOF
     
    :ERR1
    echo Не указан путь к каталогу с mp3
    echo Увы, работа - невозможна...
    GOTO :EOF
     

    Но - есть проблема, если в названии файла присутствует восклицательный знак - то архив не делается ("Файл не найден").
    Что можно сделать, что бы обойти эту проблему???

    Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 18:16 24-11-2006
    zyurikz

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    спасибо!
    есть еще один вопросик
    повторю вопрос заданный давно в этом топике
    но ответа на него ненашел
     
    кто сможет помочь привести пример батника, который будет в файле, например test.txt, заменять состав определённой строчки на что-то другое.  
    Т.е, вот к примеру состав файла test.txt:  
     
    я строка с неважным текстом...  
     
    а я другая строка, тоже с неважным текстом...  
     
    а я строка, с очень важным текстом... замените меня пожалуйста на что-то инное (например, на «я изменённая строка»)  
     
     
    как должен выглядеть батник, который будет заменять строку «а я строка, с очень важным текстом... замените меня пожалуйста на что-то инное», на такую «я изменённая строка» ?  
     
    заранее спасибо

    Всего записей: 7 | Зарегистр. 13-10-2006 | Отправлено: 19:34 24-11-2006
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    zyurikz
    Если строчка, которую надо заменить и та, на котoрую надо заменить - английские, то можно воспользоваться заменой строчек с помощью sbs2.com.

    Код:
     
    @echo off  
    :: Create the assembler program, by Herbert Kleebauer  
    echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=> %temp%.\sbs2.com  
    echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU!WvX0GwUY Wv;ovBX2Gv0ExGIuht6>> %temp%.\sbs2.com  
    echo ?@}IKuNWpe~Fpe?FNHlF?wGMECIQqo{Ox{T?kPv@jeoSeIlRFD@{AyEKj@>> %temp%.\sbs2.com  
    echo iqe~1NeAyR?mHAG~BGRgB{~H?o~TsdgCYqe?HR~upkpBG?~slJBCyA?@xA>> %temp%.\sbs2.com  
    echo LZp{xq`Cs?H[C_vHDyB?Hos@QslFA@wQ~~x}viH}`LYNBGyA?@xAB?sUq`>> %temp%.\sbs2.com  
    echo LRy@PwtCYQEuFK@A~BxPtDss@fFqjVmzD@qBEOEenU?`eHHeBCMs?FExep>> %temp%.\sbs2.com  
    echo LHsPBGyA?@xAunjzA}EKNs@CA?wQpQpKLBHv?s`WJ`LRCYyIWMJaejCksl>> %temp%.\sbs2.com  
    echo H[GyFGhHBwHZjjHeoFasuFUJeHeB?OsQH[xeHCPvqFj@oq@eNc?~}Nu??O>> %temp%.\sbs2.com  
    echo ~oEwoAjBKs?Zp`LBzHQzyEFrAWAG{EFrAqAGYwHTECIQ{coKIsaCsf{Oe~>> %temp%.\sbs2.com  
    echo CK}Ayre~CNFA{rAyEKFACrA{EKGAjbA}eKGSjNMtQFtc{OAyDGFj?{FDGQ>> %temp%.\sbs2.com  
    echo KAjNVk_OCAx@e?f{o?CosI}1EGizhljJ~H1ZeG}JBA~rACBMDGjjDG@g0>> %temp%.\sbs2.com  
    :: Use the program  
    %temp%.\sbs2.com 0 "line_to_replace" "replaced_line" < file.txt > new_file.txt  
    :: Delete the program  
    del %temp%.\sbs2.com
    rem Rename the new file to be old file
    rem del file.txt
    rem ren new_file.txt file.txt
     

    file.txt - Файл в котором надо поменять строчки
    new_file.txt - временный файл  

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 20:25 24-11-2006
    Refugee

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

    Код:
     
    @echo off
    if !%1!==!! (
    echo Не указан путь к каталогу с mp3  
    echo Увы, работа - невозможна...
    exit
    )
     
    Set tek_path=%~dp0
    PUSHD "%1%"
    for %%f in (*.mp3) do call :Arch "%%f"
    POPD
    exit
     
    :Arch
    set L1=%1
    rar a -m3 -ep -rr3p -v100m -t -- "%tek_path%%L1:~1,2%" %1
     


    Всего записей: 512 | Зарегистр. 31-03-2004 | Отправлено: 20:39 24-11-2006 | Исправлено: Refugee, 20:46 24-11-2006
    ViSiToR



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

    Цитата:
    После изменения "sendtox.inf" на ".\sendtox.inf" все работает.

    Огромное спасибо! действительно работает... правда я заметил, что если поместить в кавычки, то не работает, а также, если прописать полный путь, тоже не работает (даже с кавычками, и даже с коротким путём, и даже с префиксом .\ ). Работает только с относительным путём (.\..\относительный\путь\sendtox.inf), также не работает при передаче (или при установке) пути к файлу в качестве параметра (Call BathFile.bat "Путь\sendtox.inf" - а в BathFile.bat - обычная строка из реестра, или с модификатором что ты привёл в пример)...
     

    Цитата:
    Ты видимо меня не понял, а я не выделил:

    Я действительно не понял, но не потому что ты не выделил (я это заметил ) - я думал что это расширяет параметр передаваемый как ком. срока (CmdLine), и поэтому пытался запустить батник передавая ему путь к файлу как ком. строку (как я упоминул выше), но как выяснилось, бестолку

    Цитата:
    Жалко, что иконки не 32-х битные

    Мне кажется на то время ещё небыло такого понятия   (вроде).

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 22:36 24-11-2006
    Elroir



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

    Цитата:
    если прописать полный путь, тоже не работает  

    Очень странно - у меня все работает . Проверял на такой строчке:

    Код:
     
    rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 F:\Downloads\sendto x (For Send to folder)\sendto x (For Send to folder)\sendtox.inf
     

    Прекрасно инталлировалось. И с батником получилось (с кавычками действительно не работает)
    Запускаю строчкой батника:

    Код:
     
    call Sendtox_Install.bat "F:\Downloads\sendto x (For Send to folder)\sendto x (For Send to folder)\sendtox.inf"
     

    Путь передаю в кавычках, а в Sendtox_Install.bat убираем кавычки:

    Код:
     
    rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 %~1
     


    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 23:33 24-11-2006
    ViSiToR



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

    Цитата:
    Проверял на такой строчке:

    Хе хе, нашёл причину, не “хочет” работать с путями содержащими криллицу... как всегда, в атаку вступает “кэчекэпэ”    (chcp 1251).

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 23:54 24-11-2006
    sD31337

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    всем привет подскажите возможно сдлеать следующие
     у меня на работе в 1С есть две базы одна по клинтам розничным одна по клиентам оптовм
    задача  
    в xls файле в катором прописыаны все клиенты двух баз удалить полностью совпадающих
    пример : ЗАО "Алеонта" ул домодедовская 22 - розница
                  ЗАО "Алеонта" ул домодедовская 22 -опт
                 ЗАО "Алеонта" ул домодедовская 23 -розница
    нужно чтобы после обработки удалялись только те клиенты у которых одинаковые адреса ) незнаю возможно ли такое

    Всего записей: 30 | Зарегистр. 27-10-2006 | Отправлено: 02:47 25-11-2006
    CrackMe

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    имеется логин и пароль для модемного соединия. Подскажите батники для подключения и батник для отключению к и-нету.  
     
    Добавлено:
    Так с предыдущим вопросом разобрался - rasdial /?. Но появился другой:
    И как сделать паузу на 10 секунд перед выполнеием комманды?
    Зарание спсибо.

    Всего записей: 710 | Зарегистр. 18-07-2006 | Отправлено: 13:27 25-11-2006 | Исправлено: CrackMe, 14:01 25-11-2006
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    CrackMe
    В шапке Пакет утилит для организации интерфейса в bat-файлах. Там есть утилита HS_DELAY.
    Время указывается в миллисекундах. Пример:
    HS_DELAY 10000 - задержка на 10 секунд.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:21 25-11-2006
    ViSiToR



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

    Цитата:
    как сделать паузу на 10 секунд перед выполнеием комманды?

    Если не используя сторонние программы, тогда так:
     

    Код:
    ping -n 10 localhost > nul


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 21:57 25-11-2006
    cluster

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

    Цитата:
    ping -n 10 localhost > nul  

    Ооо! Какая клёвая команда. Спасибо огромное! Так давно искал, как сделать задержку!

    Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 23:09 25-11-2006
    Elroir



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

    Цитата:
    Ооо! Какая клёвая команда.

    Проблема с этой командой в том, что не всегда localhost пингуется. При некоторых настройках фаервола, например.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:53 26-11-2006
    JohnRD

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    добрый день/ночь всем, случайно наткнулся на эту тему - очень понравилась..
     
    может ли кто пояснить вот это:
     
    ECHO OFF  
    CD..  
    START CMD /C RMDIR /S /Q "%~dp0"
                                         ?--------?
    найдено тут http://forum.ru-board.com/topic.cgi?forum=62&topic=6156&start=80
     
    можно ли делать так CD../..  ??
     
    есть задача очистить кеш на многих машинах
    известен путь %SystemRoot%\System32\CCM\Cache\
    тут лежат паки с разными неизвестными именами, в которых есть файлы,  
    задание т.е файл CMD появиться в такой же папке с неизвестным именем, который должен удалить все папки с файлами в %SystemRoot%\System32\CCM\Cache\...
    чтобы папка \Cache\ была пуста но остался один единственный файл в корне этой папки
    Skpswi.dat
    заранее благодарен за помощь
     

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 11:24 26-11-2006 | Исправлено: JohnRD, 11:38 26-11-2006
    ViSiToR



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

    Цитата:
    При некоторых настройках фаервола, например.

    Кстати да, подтверждаю, было у меня такое... хотя при встроенном файрволе такого нет... и ещё, эта задержка может быть немного  (или иногда даже много) длиннее в том случае, если машина слабая и сильно грузится процессор в момент пингования.

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 12:45 26-11-2006
    zyurikz

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    еще раз спасибо!
    и еще один вопросик
    возможно ли удаление первых и последних 10(или др) символов каждой строки
    например:
     
    ля ля5 ля ля ля ля ля ля 8ля ля ля
    ля ля5 ля ля ля ля ля ля 8ля ля ля
     
    5 первых символов и 8 последних
    результат:
     
    5 ля ля ля ля ля ля 8
    5 ля ля ля ля ля ля 8

    Всего записей: 7 | Зарегистр. 13-10-2006 | Отправлено: 12:30 27-11-2006
       

    Страницы: 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.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru

    Рейтинг.ru