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

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



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vmix
    Как же все-таки из командной строки отключить какое-то одно входящее VPN (pptp) подключение?

    Всего записей: 162 | Зарегистр. 22-10-2002 | Отправлено: 10:34 20-02-2007
    Smarsh

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день господа форумчане.
    Позвольте обратиться с вопросом.
    Цель написания батника: бэкап почты на компах пользователей.
    Решение: в реестре в ветке HKCU\Software\RIT\The Bat! хранится адрес папки почтовых ящиков. Надо получить его и запаковать все файлы в этой папке с *.tbb.
    Для этих задач написал 2 батника:
    1-ый rq1.bat
    Цитата:
     
    set OUTPUT=out.txt
     
    if "%STDOUT_REDIRECTED%" == "" (
        set STDOUT_REDIRECTED=yes
        cmd.exe /c %0 %* >%OUTPUT%
        exit /b %ERRORLEVEL%
    )
    chcp 1251  
    reg query "HKCU\Software\RIT\The Bat!" /v "working directory"
    for /f "tokens=* usebackq" %%i in (`reg query "HKCU\Software\RIT\The Bat!" /v "working directory"`) do (    set VERSION=%%i)
    call rg2.bat %version%

    и 2-ой rg2.bat

    Цитата:
     
    ’ҐЄгйЁ© Ї®зв®ўл© Є в «®Ј %4
    md \_FILEBACKUP
    chcp 1251  
    "c:\program files\winrar\rar.exe" a -r c:\_FILEBACKUP\backup_%username%.rar %4*.tbb  

    Да, вот чтобы понятнее было, команда c:\>reg query "HKCU\Software\RIT\The Bat!" /v "working directory"  
    Выдает результат

    Цитата:
    ! REG.EXE VERSION 3.0
     
    HKEY_CURRENT_USER\Software\RIT\The Bat!
        working directory    REG_SZ    c:\почта\  
    Для примера.
     
    Русские имена обрабатываются корректно, но вот если мы имеем имя с пробелом типо "с:\program files\mail" например, то уже ошибка или если значение реестра имеет такой вид %appdata%\thebat!\.
    Видими при моем варианте извлечение значения пар-ра реестра эти ограничения не обойти... или как-то можно
    А может есть какой-то более простой способ получить его???
    Заранее спасибо

    Всего записей: 20 | Зарегистр. 20-02-2007 | Отправлено: 11:59 20-02-2007
    Tierchen

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Smitis
    Хорошо, допустим, что сначала экпортирую реестр в txtшник.
    Тут сразу проблемка - а как сразу все ключи писать? Какой разделитель?
    Ну типа
    reg query HKLM & HKCU & HKCR & ... %temp%\regexp.txt
     
    И следующий вопрос:
    например, в файл занесен ключ
     
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\DABE92CC2CB71D119A12000A9CE1A22A]
    "9040110900063D11C8EF10054038389C"="C:\\Program Files\\Microsoft Office\\Templates\\1033\\Professional Memo.dot"
     
    Хочу делать так, чтоб искал по ключевому слову и если ключевое слово встречается в названии параметра или в значении, то выписывался бы ВЕСЬ ключ со ВСЕМИ параметрами и их значениями.
    Т.е. например при поиске по "Office" у меня из вышеприведенного будет выписано только
    "9040110900063D11C8EF10054038389C"="C:\\Program Files\\Microsoft Office\\Templates\\1033\\Professional Memo.dot"
    т.е. только параметр со значением, но не ключ, в котором содержится данный параметр.
    А надо ВСЁ. Кто подскажет?

    Всего записей: 4 | Зарегистр. 14-02-2007 | Отправлено: 12:17 20-02-2007
    igor_andreev

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

    Цитата:
    вот если мы имеем имя с пробелом типо "с:\program files\mail"

    ЗеКрыски! у меня нет, проверить не могу. Но для бэкапа Outlook Express у меня батник есть. Сделай по аналогии, подставь свои ключи реестра.
    REG QUERY "HKEY_CURRENT_USER\Identities\{13C5344F-6ED2-437C-B680-300FCA98F913}\Software\Microsoft\Outlook Express\5.0" /v "Store Root" у меня выдает аналогичное твоему:

    Цитата:
     
    ! REG.EXE VERSION 3.0
     
    HKEY_CURRENT_USER\Identities\{13C5344F-6ED2-437C-B680-300FCA98F913}\Software\Microsoft\Outlook Express\5.0
        Store Root    REG_SZ    D:\MD\oe

    посему:

    Код:

    REM %USER_ID% узнал уже в батнике раньше, это кучка цифр
    REM В "TOKENS=4*" попадает все , что написано после Store Root REG_SZ  
    REM у тебя это будет все, что после working directory    REG_SZ
    REM 4-й токен будет иметь значение %%a, все остальное * - %%b
    REM Если пробел в пути к банку сообщений есть - параметр %%b
    REM пустым НЕ БУДЕТ, поэтому делаем проверку IF "%%b/"=="/"
     
    FOR /F "TOKENS=4*" %%a IN ('REG QUERY "HKCU\Identities\%USER_ID%\Software\Microsoft\Outlook Express\5.0" /v "Store Root"') DO (
     IF "%%b/"=="/" (SET FOLDER_WITH_DBX=%%a) ELSE (SET FOLDER_WITH_DBX=%%a %%b)
    )

     

    Цитата:
    или если значение реестра имеет такой вид %appdata%\thebat!

    А для этого дальше я делаю:

    Код:

    REM На случай, если базы *.DBX, ну у тебя *.TBB, в папке типа %UserProfile%\ и т.п.
    REM Команда ECHO раскроет значение между знаками %
     
    FOR /F "TOKENS=*" %%A IN ('ECHO.%FOLDER_WITH_DBX%') DO SET FOLDER_WITH_DBX=%%A

     
     

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 13:30 20-02-2007 | Исправлено: igor_andreev, 13:49 20-02-2007
    Smarsh

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    10 баллов =) все катит =) спасибо, сам бы никогда не додумался =) (нет ну может и додумался, если бы нормально понимал что происходит с командами for и tolkens, а то нормального описания ни где не видел =) Может есть где?? Подскажите??).
     
    Ща перекрою все в один батничек и будет все пучком...
     
    Огромное спасибо =)

    Всего записей: 20 | Зарегистр. 20-02-2007 | Отправлено: 13:58 20-02-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Smarsh
    Пробел не забудь удалить в конце строки после %%A, забыл про дурацкое копирование с этого форума..

    Цитата:
    FOR /F "TOKENS=*" %%A IN ('ECHO.%FOLDER_WITH_DBX%') DO SET FOLDER_WITH_DBX=%%A  


    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 14:20 20-02-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Smitis
    Цитата:
    ё....
    А зачем так много пингов? Одного разве не хватило бы? Увеличить задержку и всё.
    а ты попробуй сделать то, что я выписывал кучей пингов, то есть похожее рукописное письмо, всего одним пингом, буду ждать с нетерпением...
     
    igor_andreev
    хотя мне не нужен пока что ни бат, ни тем более аутглюк, тем не менее в примере очень великолепно видна одновременная работа двух важнейших операторов for и if, да еще и с реестром, за что отд. спс

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 14:56 20-02-2007 | Исправлено: Nagual, 15:17 20-02-2007
    Smarsh

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    Спасибо =), но я сам врубился... правда час щас на это потратил =) Пришел сказать что у тя ошибка =) У меня из-за этого рар просто весь диск сканил в тупую =) Но теперь все ок! В результате полная верся бат файла выглядит так:

    Цитата:
     
    chcp 1251
    echo -------------------------------------------------------------------------------- >>log.txt
    date /t >>log.txt
    time /t >>log.txt
    FOR /F "TOKENS=4*" %%a IN ('reg query "HKCU\Software\RIT\The Bat!" /v "working directory"') DO (  
     IF "%%b/"=="/" (SET asd=%%a) ELSE (SET asd=%%a %%b)  
    ) >>log.txt
    FOR /F "TOKENS=*" %%A IN ('ECHO.%asd%') DO SET asd=%%A>>log.txt
    echo ’ҐЄгйЁ© Ї®зв®ўл© Є в «®Ј >>log.txt
    set asd >>log.txt
    mkdir c:\_FILEBACKUP >>log.txt
    "c:\program files\winrar\rar.exe" a -r c:\_FILEBACKUP\backup_%username%.rar "%asd%*.tbb">>log.txt
    echo -------------------------------------------------------------------------------- >>log.txt
     

    Ну если никого не смущает, что он весит ровно 666 байт =)
     

    Всего записей: 20 | Зарегистр. 20-02-2007 | Отправлено: 15:44 20-02-2007 | Исправлено: Smarsh, 16:19 20-02-2007
    Patron73



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    rothman
    почему когда я пишу в скрепте open x.x.x.x - IP который открываю
    он пишет что  

    Цитата:
    "open" не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.

     

    Всего записей: 138 | Зарегистр. 01-06-2005 | Отправлено: 17:09 20-02-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Patron73
    Покажи скрипт и как ты его используешь?

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 17:14 20-02-2007
    JohnRD

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir подскажите пожалуйста что я пропустил или не дописал.
    после того как, не выполнено: %%a==%username% set key=%%b должно по идее ни чего не происходить далее, но у меня продолжает выполнятся все что ниже  
    if not defined key goto :EOF
     

    Код:
    @echo off
    set key=  
    for /f "usebackq tokens=1,2 delims=;" %%a in (login-container.csv) do if /i %%a==%username% set key=%%b
    if not defined key goto :EOF  
    type C:\LanDocs\Client\LANDOCS.INI|gsar -s"iKeyLogOn=-" -r"iKeyLogOn=+" -F|gsar -s"wbprefix=vcert" -r"wbprefix=native" -F|gsar -s"iKey=+" -r -F|gsar -s"iKey=-" -r -F|gsar -s"wbcontainer=iKey" -r"wbcontainer=%key%" -F >LANDOCS2.INI
    copy LANDOCS2.INI C:\LanDocs\Client\LANDOCS.INI /y
    del LANDOCS2.INI

     
    login-container.csv

    Код:
     
    Abramova_TY;Abramova T.Y._L
    Abramtzova_NM;Abramtsova N.M._L
    AGUREEV_VY;Agureev V.Y._L
    Akhrimenko_DO;Ahrimenko D.O._L
    Akinina_NA;Akinina N.A._L
    Aksyonov_EG;Aksyonov E.G._L
    Akushskaya_MI;Akushskaya M.I._L
    Aleksandrov_YL;Aleksandrov Y.L._L
    Aleksanov_AA;Alexanov A.A._L
    Alekseev_AA;Alekseev A.A._L
    Aleksina_TB;Aleksina T.B._L
    .....
     

     
    спасибо
    Евгений

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 18:25 20-02-2007 | Исправлено: JohnRD, 18:28 20-02-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    JohnRD
    Попробуй заменить set key=  на set "key=" и set key=%%b на  set "key=%%b"

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

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
     
    спасибо огромное, все работает.
     
    Добавлено:
    подскажите пожалуйста как через reg.exe
    вписать строковый параметр по умолчанию "@",  как через regedit

    Код:
     
    REGEDIT4
     
    [HKEY_CURRENT_USER\Software\MDPREI\CRYPTOGRAPHY\KEYDEVICES]
    @="KEYFILE"
     

    так не хочет..

    Код:
     
    reg add HKEY_CURRENT_USER\Software\MDPREI\CRYPTOGRAPHY\KEYDEVICES /v @ /t REG_SZ /d KEYFILE /f
     

    спасибо
     
    Добавлено:
    спасибо дошло
     
    reg add HKEY_CURRENT_USER\Software\MDPREI\CRYPTOGRAPHY\KEYDEVICES /ve /t REG_SZ /d KEYFILE /f

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 19:07 20-02-2007 | Исправлено: JohnRD, 19:08 20-02-2007
    Smitis



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

    Цитата:
    Хорошо, допустим, что сначала экпортирую реестр в txtшник.  
    Тут сразу проблемка - а как сразу все ключи писать? Какой разделитель?

    Так (примерно):

    Код:
     
    start /wait regedit /ea 1.reg HKEY_LOCAL_MACHINE
    start /wait regedit /ea 2.reg HKEY_CURRENT_USER
    copy 1.reg+2.reg 0.reg > nul
    del 1.reg 2.reg > nul
     

    Имей ввиду, что HKCR это подраздел HKLM, а HKCU подраздел HKU
     
    Nagual
    Увеличение значения параметра -w не помогает? =)
     
    Smarsh

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

    раз: FOR /?
    два: %windir%\help\ntcmds.chm
    три: yandex (как это не странно) запрос по словам for tokens delims

    Всего записей: 3179 | Зарегистр. 09-02-2003 | Отправлено: 01:05 21-02-2007
    Patron73



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

    Цитата:
    Покажи скрипт и как ты его используешь?

    делаю так
    <------begin----->
    ftp
    open x.x.x.x
     
     
    user Юзер пароль
    cd www
    cd htdocs
    cd download
    put c:\tmp\txt.txt
    quit
    <-----end------>

    Всего записей: 138 | Зарегистр. 01-06-2005 | Отправлено: 09:29 21-02-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Patron73
    А ты пробовал так
    Файл script.ftp

    Код:
     open x.x.x.x
     
     
    user Юзер пароль
    cd www
    cd htdocs
    cd download
    put c:\tmp\txt.txt
    quit  

    и далее вызывать так
    ftp < script.ftp

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 10:06 21-02-2007
    IDOL



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Товарищи господа и дамы (если даммы в этом теме существуют) =)
     
    Нужна помощь !
     
    Суть проблемы столкнулся с червячком он меняет адрес ДНС сервера.
     
    А теперь суть задачи:
     
     
    Как при помощи батника сбросить параметры DNS сервера в ОПРЕДЕЛЁННОМ сетевом подключении ( но именно того подключения за которое отвечает модем у меня это Motorola)
     
    @echo off
     
    (сдесь надо определить название сетевого подключения на котором висит Motorola)
     
    netsh interface ip set dns name="(название подключения без скобок)" source=dhcp
     
    (А сдесь надо сделать перезагрузку этого сетевого подключения)
     
    Как люди добры как мне это сделать вотрой день мозг ломаю =(
     
     
     
     
     

    Всего записей: 27 | Зарегистр. 06-07-2002 | Отправлено: 11:40 21-02-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Smitis
    если бы помогало я, наверное, не постил бы, проверь сам, ставил это значение и кратное миллионам, результата никакого
    вот немного убрал пугающий вид кучи пингов, если надо, чтобы еще медленней писало, добавляем %p1% столько раз, сколько нужно
    ну и неплохо бы еще с заголовком поработать, но пока в падлу )

    Код:
    :_write
    set p1=PING -n 1 -w 1000 loopback ^>NUL ^&^&  
    cls && echo %* & %p1%%p1%%p1%%p1%%p1%%p1%%p1%%p1%%p1%%p1%%p1%goto eof

    во второй строке на конце должен быть пробел

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:10 21-02-2007
    Patron73



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KapralBel
    делал и так....
    но сделал по другому
    ftp -A x.x.x.x и усе зароботало

    Всего записей: 138 | Зарегистр. 01-06-2005 | Отправлено: 12:14 21-02-2007
    igor_andreev

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

    Цитата:
    ну и неплохо бы еще с заголовком поработать

    Да чего с ним работать, этож дураковаляние было, практической пользы от этого батника - ноль целых и ноль десятых Кстати мне про ошибки почему-то никто ничего не говорит. Я там не вставил в начале батника CHCP 1251, %USERNAME% наверно, если русскими буквами - козябрами пишется. И кролик по английски - rabbit, а я почему-то rabbith написал Ужастная громматичиская ашыпка.

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 12:27 21-02-2007 | Исправлено: igor_andreev, 12:29 21-02-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