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

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

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

evle (19-03-2008 19:44): Лимит страниц.
Задачи на bat-файлах 5
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 15:21 11-09-2007 | Исправлено: Elroir, 01:52 26-02-2008
    antonn2

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    спасибище
    а то я написал, а не знаю, точно ли оно отработает:

    Код:
    set diskk=c:\one\
    cd %diskk%
    for /d %%i in (*) do (  
    if exist "%diskk%%%i" (
        echo %diskk%%%i
    rem ну тут копирование
    )
    )

    Всего записей: 96 | Зарегистр. 13-11-2006 | Отправлено: 23:14 25-12-2007
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    slech
     
    for /f "tokens=*" %%c in ('DIR /t:c /a:d /o:-d /b') do echo %%c
     
    выведет в правильной сортировке от поздних к ранним, попробуй сам выцепить 3 первых каталога

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 00:51 26-12-2007 | Исправлено: king_stiven, 01:03 26-12-2007
    hamet2000

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста как с помощью eventcreate.exe создать событие в логах c  типом ERROR (ошибка)  
    пробовал как в справке ключь /Т ERROR
    EVENTCREATE /T ERROR /ID 999 /L APPLICATION
        /SO WinWord /D "новый источник Winword в журнале приложений"
    не помогает всеравно создается событие с типом "уведомление"

    Всего записей: 57 | Зарегистр. 21-12-2005 | Отправлено: 11:05 26-12-2007
    BasiL



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

    Цитата:
    пробовал как в справке

    я тоже попробовал.
    с любым значением ключа /T событие записывается с типом "information".
    WinXP SP2 + MUI

    Всего записей: 3247 | Зарегистр. 13-03-2004 | Отправлено: 13:56 26-12-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    hamet2000
    BasiL
    И я попробовал - все создается с тем типом события, с которым я хочу.
    WinXP SP2 english - учетная запись с администраторскими привилегиями.

    ----------
    "В интернете есть все, но не всегда"

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



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

    Цитата:
    учетная запись с администраторскими привилегиями.

    хм.. а под локальным админом у меня тоже работает.
    Правда, у локального админа не включен русский MUI... может в нем дело?
    учетная запись без админских прав и без МУИ тоже нормальный тип посылает...

    Всего записей: 3247 | Зарегистр. 13-03-2004 | Отправлено: 15:02 26-12-2007
    antonclass



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Уважаемые, такая задача:  
    1. Необходимо найти в реестре параметры и/или имена разделов, содержащие заданную строку.  
    2. По результатам поиска, выполнить экспорт разделов, содержащих найденный параметр в п.1. (чтобы была возможность восстановления)  
    3. Выполнить удаление разделов, содержащих заданный параметр.  
     
    Желательно, чтобы это было реализовано в *.bat или *.cmd ...  
     
    Помогите пожалуйства  Голову сломал  
     
    Предложите решение такой задачки ...

    Всего записей: 158 | Зарегистр. 15-09-2005 | Отправлено: 22:00 26-12-2007
    kain24



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Требуется ежедневно копировать папку с фтп сервера на локальный комп и переименовывать папку в прежднее_названиеГодМесяцЧисло причем вчерашнее число.
    Причем в папке лежает еще папки, а них файлы и структуру папок надо сохранить.
    Пытался помучать ftp.exe но похоже в нем нельзя скопировать струкуру папок (поправте меня если я не прав).
    И еще было бы не плохо эту архивировать =)

    Всего записей: 84 | Зарегистр. 03-08-2003 | Отправлено: 07:12 27-12-2007
    kitih



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    !!! помогите написать командный файл...!!!  
     
    написать командный файл, который печатет общее число переменных среды, определенных в системе, и выводит на экран имена этих переменных вместе с порядковым номером. Предусмотреть два дополнительных ключа: если задан ключ /B, то выводить только имена переменных (без значений), если задан ключ /A, то выводить имя переменной и ее значение в круглых скобках.  
     
    Спасибо большое за внимание...

    Всего записей: 3 | Зарегистр. 26-12-2007 | Отправлено: 10:18 27-12-2007
    Jekas

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет, тупой вопрос как в bat файле сделать подтверждение для выполнения команды?
    например route rpint и потом еще что нить такое чтобы батник спросил "продолжить выполнение да или нет?"......Помогите плиз ответ нужен быстро.

    Всего записей: 3 | Зарегистр. 04-11-2004 | Отправлено: 12:04 27-12-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    antonclass
    Попробуй вариант. Желательно в качестве поиска задавать точные названия параметров или их значение. Подразделы с подходящими соответствиями будут экспортированы. Удаление не делал, т.к большая вероятность нахимичить. Сам додумаешь.
    Работает относительно долго.

    Код:
     
    @echo off && setlocal
    set /p toFind="Строка для поиска: "
    set folder=RegSaves-%date%-%time::=-%
    md %folder:~0,-3%
    set cnt=0
    for %%i in (hkcu hklm hku hkcc hkcr) do (
        for /f "tokens=*" %%a in ('reg query %%i /s 2^>nul ^| find "HKEY"') do (call:seach "%%a")
    )
    rd %folder:~0,-3% 2>nul
    goto:eof
     
    :seach
    reg query %1 2>nul | findstr "%toFind%" 2>nul && (
        set /a cnt+=1
        reg export %1 %folder:~0,-3%\%cnt%.reg
    )
    goto:eof
     

     
    kitih, По моему точно такой же вопрос уже встречался, это что домашнее задание?

    Код:
     
    @echo off && setlocal
    set key=%1.
    if %key%==. echo Usage: %~nx0 /a or /b && goto:eof
    for /f "tokens=1,2 delims==" %%a in ('set ^| findstr /v "cnt key prf"') do (
        call:print "%%a" "%%b")
    goto:eof
     
    :print
    set /a cnt+=1
    set prf=00%cnt%
    if /i %key%==/A. echo %prf:~-2,2%.%~1 && goto:eof
    if /i %key%==/B. echo %prf:~-2,2%.%~1 (%~2) && goto:eof
     
     

     
     
    Добавлено:
    Jekas
    set /p

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:13 27-12-2007
    Jekas

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

    Всего записей: 3 | Зарегистр. 04-11-2004 | Отправлено: 12:40 27-12-2007
    BasiL



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

    Цитата:
    что поставить в начале строки чтобы строка стала коментом?

    rem
     
    еще некоторые используют трюк с использованием двоеточия.
    Т.к. с двоеточия начинаются метки условного перехода, интерпретатором они игнориуются.
    Не рекомендуется использовать внутри циклов.

    Всего записей: 3247 | Зарегистр. 13-03-2004 | Отправлено: 13:43 27-12-2007
    antonclass



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    спасибо попробую обязательно - потом отпишу. Ща позвали на корпоратив и некогда посмотреть. Это не домашка, т.к. я не студент. Это рабочий момент. Еще раз спасибо!

    Всего записей: 158 | Зарегистр. 15-09-2005 | Отправлено: 14:30 27-12-2007
    Lapochka ili Chai



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

    Цитата:
    Maza Faka
     
    СПАСИБО!!!  РЕСПЕКТ!!!  
    Попробовал, работает, ща займусь доводкой до ума.
    подобного решения даже не предполагал..

     
    Пардон за, возможно, примитивный вопрос -- а на переносном USB-HDD это творение работать будет? будет менять букву диска и тем самым восстанавливать работоспособность ярлыков?

    Всего записей: 847 | Зарегистр. 27-11-2003 | Отправлено: 16:14 27-12-2007
    Vladimir312



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    С наступающим "Новым Годом" !
    и маленький вопросик:
    - есть текстовый файл, в котором скриптик делает замену:

    Код:
    @echo off  
    for /f "tokens=*" %%a in ('more^<web.log.txt') do call :_replace %%a  
    goto eof  
     
    :_replace  
    set i=%*  
    echo %i%  
     
    set i=%i:192.168.2x.10=Дед Мазай%  
    set i=%i:192.168.2x.11=и зайцы%  
     
    echo %i%>>replace_FIO.txt  
    goto eof  
     
    :eof

    Фикус в том, что в текстовике разделители - табуляция (удобно для импорта в Excel),
    а после отработки скриптика - вместо \t - пробелы.
     
    Вопрос: можно ли сказать bat-нику "не менять" таб на пробелы ?

    Всего записей: 151 | Зарегистр. 25-10-2006 | Отправлено: 20:57 27-12-2007
    Elroir



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

    Цитата:
    Вопрос: можно ли сказать bat-нику "не менять" таб на пробелы ?

    Нельзя.
    Используй сторонние утилиты замены текста в файлах - во первых быстрее, во вторых, не трогает ничего, кроме заменяемой части.
     
    Добавлено:
    Или можно...
    Попробуй так:

    Код:
     
    @echo off  
    for /f "tokens=*" %%a in ('more^<web.log.txt') do call :_replace "%%a"
    goto eof
     
    :_replace  
    set "i=%~1"  
    echo %i%  
     
    set "i=%i:192.168.2x.10=Дед Мазай%"
    set "i=%i:192.168.2x.11=и зайцы%"
     
    echo %i%>>replace_FIO.txt  
    goto eof  
    :eof  
     
     
    Может сработает - не проверял.

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 21:04 27-12-2007
    Lutvun



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

    Код:
    for /f "delims=.rar tokens=1,2" %%a in ('dir /b S:\Sorted\1\') do ren "S:\Sorted\1\%%a%%b" "%%a"

    Хочю так файлы с именами типа: A.N.Ostrovskiy.Pozdnyaya.lyubov.part2.rar64.215.245.5_1936_20111.abook.rar переименовывать в A.N.Ostrovskiy.Pozdnyaya.lyubov.part2.rar
     
    П.С. Есть какая нибудь литература по батниках?

    Всего записей: 286 | Зарегистр. 22-11-2005 | Отправлено: 14:30 28-12-2007
    antonclass



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Во время работы выдаёт
    "Непредвиденное появление: &." и вылетает

    Всего записей: 158 | Зарегистр. 15-09-2005 | Отправлено: 14:47 28-12-2007
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Lutvun
     
    примеры с delims
    delims=.,r,a
    только один элемент можно указывать через запятую
     
     
    Добавлено:
    Lutvun
     
    П.С. Есть какая нибудь литература по батниках?
     
    только справка ещё немного в интернете, я учился только на этом форуме.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 14:54 28-12-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 101 102 103

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 4
    evle (19-03-2008 19:44): Лимит страниц.
    Задачи на bat-файлах 5


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru