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

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

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

vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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-файлах 6
(часть 1, часть 2, часть 3, часть 4, часть 5)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
 
Для перекодирования кирилицы 866<<>>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы

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





    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 23:07 04-11-2008 | Исправлено: vu1tur, 11:38 26-05-2009
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята, извиняюсь, что повторяю вопрос дважды, просто я толком не разобрался, как полностью скрыть окно коммандной строки во время выполнения *.bat файла. Пожалуйста, объясните подробнее. Буду очень признателен Вашей помощи.

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 19:57 17-12-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    stepanovig
    Опиши подробней, что команды делают, пример текста конкретный без обобщений
     
    Добавлено:
    tuwkan
    поизучай команды goto, if ping в шапке есть как делать паузы
     
    Добавлено:
    Artem_Butenko
    в шапке поизучай потом с примерами пусть недоделаными приходи

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 21:23 17-12-2008
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven -- полностью с Вами согласен. Беда вот только в том, что аннотации и мануал к этим программам на английском, а я изучал немецкий. Плюс мне не совсем понятно, как вообще можно скрыть окно коммандной строки во время выполнения батника? Пожалуйста, если у Вас есть время и желание, помогите разобраться с проблемой. Буду Вам искренне благодарен!

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 22:15 17-12-2008
    Elroir



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

    Код:
     
    for /f "tokens=*" %%i in ('more^<a.txt') do call :aaa %%i  
    goto :eof  
    :aaa  
    set "a=%*"
    set "a=%a:AAAAA=%"
    1>>a2.txt echo %a%
     

     
    Добавлено:
    gilyo
    Например, юзеры Vasya и Petya принадлежат к группе, которой нужны все шары (group1), а юзер Vova к группе, которой нужны только первая и 3-я шары (group2):

    Код:
     
    @echo off
    setlocal
    set "group1=Vasya Petya Ira Sasha"
    set "group2=Vova Dima Gena Valya"
     
    :: Проверка первой группы
    echo %group1% | find /i "%USERNAME%">nul
    if not errorlevel 1 (
    %systemroot%\SYSTEM32\net use m: \\D_ser\SCR$  
    %systemroot%\SYSTEM32\net use f: \\D_ser\SEP$  
    %systemroot%\SYSTEM32\net use n: \\D_ser\STAT$
    goto :EOF
    )
     
    :: Проверка второй группы
    echo %group2% | find /i "%USERNAME%">nul
    if not errorlevel 1 (
    %systemroot%\SYSTEM32\net use m: \\D_ser\SCR$  
    %systemroot%\SYSTEM32\net use n: \\D_ser\STAT$
    goto :EOF
    )
     

    В предыдущем коде, мы для каждой группы указывали шары. Можно сделать по-другому - для каждой шары указывать группу:

    Код:
     
    @echo off
    setlocal
    set "group_for_share1=Vasya Petya Vova"
    set "group_for_share2=Vasya Petya"
    set "group_for_share3=Vasya Petya Vova"
     
    :: Проверяем первую шару
    echo %group_for_share1% | find /i "%USERNAME%">nul
    if not errorlevel 1 %systemroot%\SYSTEM32\net use m: \\D_ser\SCR$
     
    :: Проверяем вторую шару
    echo %group_for_share2% | find /i "%USERNAME%">nul
    if not errorlevel 1 %systemroot%\SYSTEM32\net use f: \\D_ser\SEP$
     
    :: Проверяем третью шару
    echo %group_for_share3% | find /i "%USERNAME%">nul
    if not errorlevel 1 %systemroot%\SYSTEM32\net use n: \\D_ser\STAT$
     

     
     
     
     
    Добавлено:
    tuwkan

    Код:
     
    @echo off
    :loop
    ping 192.168.0.1 | find "TTL=">nul
    if not errorlevel 1 (
    taskkill /f /im NMNE.exe>nul 2>&1
    ) else (
    tasklist | find /i "nmne.exe">nul
    if errorlevel 1 start "" nmne.exe"
    )
    ping -n 31 -w 1000 127.0.0.1>nul
    goto loop
     

    После запуска, батник будет каждые 30 секунд делать проверку, пока его не закроют.
     
    Добавлено:
    Artem_Butenko
    С помощью утилиты cmdow.exe - в самом батнике прописывается на первой строчке:

    Код:
    cmdow @ /hid

    При этом, консольное окошко появится на мгновение при запуске батника и исчезнет.
     
    С помощью утилиты hstart.exe - надо запускать батник этой утилитой. При этом, окно батника не появляется вообще:

    Код:
    hstart /NOCONSOLE "batch_file.cmd"

     
    Ссылки на обе утилиты можно найти в шапке, в разделе "Полезные утилиты"
     
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 23:35 17-12-2008
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir - большое Вам человеческое спасибо!

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 00:45 18-12-2008
    stepanovig



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

    Всего записей: 2 | Зарегистр. 17-12-2008 | Отправлено: 08:32 18-12-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Artem_Butenko
    с cmdow лучше так
    Title y
    cmdow "y" /HID
     

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 08:47 18-12-2008
    VSVSVSVS

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    По старой теме почему этот код не работает почему выдает ошибка синтаксиса в ren
    Код:
     
     c:
    cd c:\Program Files\7-Zip
    SET Source_backup="d:\foto"  
    SET Back_up_path="d:\Backup\backup foto_"  
    7z a %Back_up_path% %Source_backup% -r  
    FOR /F "SKIP=20 DELIMS=" %%A IN ('DIR /O:-D /A:-D /B "d:\Backup\backup foto_*.zip" 2^>NUL') DO DEL "d:\Backup\%%A">NUL 2>&1
    SET DATE=%DATE%
    REN D:\Backup\backup foto_ backup foto_%DATE%
    pause

    Всего записей: 4 | Зарегистр. 17-12-2008 | Отправлено: 11:25 18-12-2008
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    VSVSVSVS
    У тебя 3 аргумента в команде ren, a она работает с двумя. И не забудь кавычки вокруг имени.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 12:01 18-12-2008
    real_LEM



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

    Код:
    REN "backup foto_" "backup foto_%DATE%"

     
     
    Добавлено:
    P.S. Хотя если это для архива .7z, то правильнее будет так:

    Код:
    REN "backup foto_.7z" "backup foto_%DATE%.7z"


    Всего записей: 461 | Зарегистр. 11-09-2002 | Отправлено: 13:16 18-12-2008
    tuwkan

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    ГРОМАДНОЕ СПАСИБО!!! С ума сойти! РАБОТАЕТ! а я тут такие начальные варианты пытался написать... вспомить страшно. Сижу читаю дальше, но честно говоря не всё пока понятно и что читать тоже... (я про самообучение) За скрипт еще раз СПАСИБО! Оказалось все намного проще чем я даже мог представить

    Всего записей: 2 | Зарегистр. 17-12-2008 | Отправлено: 15:31 18-12-2008
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven - спасибо, обязательно учту Ваши замечания.

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 17:05 18-12-2008
    gbcfkf



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Приветствую
     
    Подкинтьте идею..
    Есть txt файл со списком компьютеров:

    Код:
     
    Spisok.txt
    Comp1
    ..
    CompN
     

    Батником копирую на эти компы нужный файл:

    Код:
     
    @echo off
    SET path1="\\server\c$\1\file1.htm"
    for /f %%a in (Spisok.txt) do (
    SET path2="\\%%a\c$\WINDOWS\pchealth"
    copy %path1% %path2%)
     

    Вопрос: как в том же файле Spisok.txt крыжить удачно выполненную операцию?
    В голову лезут всякие дурные мысли типа: после копирования проверять по нужному пути наличие нового файла и если он существует, то дописывать в Spisok.txt в соответствующую строку какой-нибудь знак..

    Всего записей: 702 | Зарегистр. 17-10-2006 | Отправлено: 07:35 19-12-2008
    tdr1225



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gbcfkf
    А зачем корежить _тот_же_ файл. Ведь в след. раз ты им воспользоваться уже не сможешь. Создавай файл "список-ок" со списком успехов, и файл "список-ош" - с ошибками. Потом эти файлы либо переименуешь, либо объединишь.

    Всего записей: 281 | Зарегистр. 07-12-2005 | Отправлено: 09:34 19-12-2008
    gbcfkf



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    tdr1225
    логично.. вот только не хочется вылезать за рамки одного файла.  
    о! А ведь можно просто удалять из списка удачные значения..  
    Кстати, как это сделать?

    Всего записей: 702 | Зарегистр. 17-10-2006 | Отправлено: 09:42 19-12-2008
    johnmar



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    для тех у кого Опера:
    вот написал UserJS для удаления концевых пробелов внутри бока "Код:"

    //---------------------------------------------------------------------------------------------
    document.addEventListener('load',function(ev){
     var d = document.getElementsByClassName('lgf');
     for (var i = d.length-1; i > -1; i--) {
       var rep=d[i].innerHTML.replace(/\s*\<br\>/ig,'<br>'); if(rep!=d[i].innerHTML){d[i].innerHTML=rep};
     }
    },false);
    //---------------------------------------------------------------------------------------------

    Проверено в Опера 9.63, работает
    Внутри блока "Код:" текст сразу копируется уже без пробелов

    P.S. Только один недостаток - нужно дождаться, пока в Опере загрузится вся страница, иначе не сработает.

    Всего записей: 30 | Зарегистр. 28-03-2008 | Отправлено: 13:33 19-12-2008
    Egoz



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Приветствую.
    Помогите решить с помощью батника следующую задачу.
    Условия:
    - Есть ОС Win200 server
    - файловая система ntfs
    - на диске c: есть общая папочка Обмен
    - содержит как файлы, так и папки пользователей
    - комп не выключается, права админские
    Задача: автоматизировать (при помощи планировщика наверное) очищение этой папки.
    Т.е., например, раз в месяц, чтоб срабатывал bat'ник и удалял содержимое папки Обмен со всеми каталогами/подпапками и файлами, расположенными как в корне папки Обмен так и в подпапках.
    Подскажите пожалуйста код такого bat'ника.

    Всего записей: 8 | Зарегистр. 03-01-2006 | Отправлено: 13:40 19-12-2008
    KapralBel



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

    Код:
     
    @Echo Off
    PushD D:\Obmen
    RD . /q /s
    PopD
     

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 14:02 19-12-2008
    tdr1225



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

    Цитата:
    удалять из списка удачные значения

    Создай файл с неудачными значениями, оригинал удали, переименуй файл.

    Всего записей: 281 | Зарегистр. 07-12-2005 | Отправлено: 14:50 19-12-2008 | Исправлено: tdr1225, 14:50 19-12-2008
    Egoz



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

    Цитата:
    Код:
     
    @Echo Off
    PushD D:\Obmen
    RD . /q /s
    PopD
     

    можно пожалуйста с расшифровкой и где должен находиться/лежать сам bat-файлик?

    Всего записей: 8 | Зарегистр. 03-01-2006 | Отправлено: 14:52 19-12-2008
       

    Страницы: 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-файлах 6
    vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru