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

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

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

vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 104 105 106 107 108 109 110 111 112 113 114 115 116 117

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:37 26-05-2009 | Исправлено: TechnicsKuzya, 13:53 27-12-2009
    smirnvlad

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

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 19:07 04-08-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    testir
    пролистни назад страниц 10-15 было похожее, попробуй.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 19:25 04-08-2009
    Soloveu



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ простейшая задача, мне надо парочке файлов дать права администратора.
    У меня получилось вот что:
     
    cacls "%WinDir%\System32\dwm.exe" /e /g Administrators:f
     
    При этом пишется - сопоставление между именами пользователей и идентификаторами безопасности не было произведено.
     
    Не пойму что не так делаю. Если вместо админа подставить everyone все нормально...но для всех доступ мне не нужен (сказали опасно)
     
    PS: знаю что где-нибудь ответ 100% уже написан, но найти его просто невозможно..

    Всего записей: 60 | Зарегистр. 05-02-2008 | Отправлено: 20:09 04-08-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Soloveu
    Подозреваю, что у тебя нет группы "Administrators", зато есть "Администраторы"

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 23:45 04-08-2009
    Soloveu



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

    Всего записей: 60 | Зарегистр. 05-02-2008 | Отправлено: 00:19 05-08-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    testir
    @echo off
    for /f "tokens=*" %%e in ('dir /b /a:d c:\ ^| findstr /v /X /G:"1.txt"') do (
        for /f "tokens=*" %%f in ('dir /b /a:d "c:\%%e" ^| findstr /X /C:"folder10"') do rd /S /Q "c:\%%e\%%f"
    )

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 07:02 05-08-2009
    SeriouSShat

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    smirnvlad я тоже так сделал, но почему то, когда скрипт запускается 3-й раз, 4-й раз и т.д. Файлы после test_1.txt не создаются. Тоесть если я убираю в самом конце скрипта -rm и запускаю 5 раз скрипт подряд, вместо того чтобы получить test.txt, test_1.txt, test_2.txt, test_3.txt, test_4.txt, у меня только созданы test.txt и test_1.txt.  
    Подскажите, почему так?

    Всего записей: 8 | Зарегистр. 04-08-2009 | Отправлено: 09:48 05-08-2009 | Исправлено: SeriouSShat, 09:52 05-08-2009
    GreaseOD1

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день.
     
    Подскажите пожалуйста как из переменной типа %%i вынуть нужную информацию
    Вот пример.
     
    @echo on
    ::List_stores.txt содержет две строки: qwe002, qwe010
     
    for /F %%i in (List_stores.txt) do (
     
    ::Хочу подключится к серверу %%i (qwe002)  и скопировать файл с названием 02_zzz.txt и отправить его на др сервер.
    ::Как можно из переменной %%i выцепить только цифры 02 чтобы потом использовать их для копирования файла 02_zzz.txt?
    ::Пытался обрезать как например с датой (set y=%date:~6,2%) но не получилось  
    ::set y=%%i:~6,1 - не работает
     
    )

    Всего записей: 4 | Зарегистр. 07-01-2007 | Отправлено: 10:41 05-08-2009
    SeriouSShat

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите почему после test_1.txt файлы больше не создаются. Тоесть убирав в самом конце скрипта -rm (чтобы файлы не удалялись) и запускаю 5 раз скрипт подряд, вместо того чтобы получить в папке 5 файликов - test.txt, test_1.txt, test_2.txt, test_3.txt, test_4.txt, у меня созданы только - test.txt и test_1.txt.
    Вот скрипт:
    Подробнее...

    Всего записей: 8 | Зарегистр. 04-08-2009 | Отправлено: 11:55 05-08-2009
    testir



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    Спасибо за решение, можно добавить еще несколько условий,
    есть 3 разных каталога
    folder1
    folder2
    folder3
    названия каталогов - это даты, каждый раз меняются. механизм вычисления дат есть,просто названия каталогов принимают каждый раз новые даты.
     
    есть список каталогов (1.txt), которые нужно пропускать  (сравнивая их с каталогами которые в корне), после чего, осуществлять поиск  по всему дереву выбранных каталогов  
     
    в folder3 создается файл filename
    удаление folder2 зависит от наличия  файла filename в folder3,  удаление folder1 не зависит ни от чего - просто поиск folder1 по всем каталогам кроме тех что в списке 1.txt и удаление.
    Каталоги  folder2 и folder3  находятся в одном подкаталоге.  
    пример
     
    есть список каталогов в корне
    root\kat1
    root\kat2
    root\kat3
    root\kat4
     
    есть список 1.txt  в котором kat3 kat4
     
    сравнивать поочередно каталоги из корня со списком 1.txt
    которые совпадают - пропускаем,
    если не совпадают, заходим в этот каталог и делаем поиск по всем его подкаталогам в поисках:
     folder1 (если нашли - удалить)
     файла filename, который находится в folder3, если файл существует - удалить folder2 со всеми содержимым, если не существует продолжить поиск folder1.  
     
     
     
     
     
     

    Всего записей: 15 | Зарегистр. 14-02-2007 | Отправлено: 13:07 05-08-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    как расшарить папку для с разными правами доступа двух юзеров?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 15:19 05-08-2009
    smirnvlad

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

    Цитата:
    Подскажите почему после test_1.txt файлы больше не создаются. Тоесть убирав в самом конце скрипта -rm (чтобы файлы не удалялись) и запускаю 5 раз скрипт подряд, вместо того чтобы получить в папке 5 файликов - test.txt, test_1.txt, test_2.txt, test_3.txt, test_4.txt, у меня созданы только - test.txt и test_1.txt.  

     
    такое возможно в случае одновременного запуска нескольких копий скрипта или если рабочая папка не D:\HP
     
    попробуйте этот
    Подробнее...

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 19:44 05-08-2009 | Исправлено: smirnvlad, 19:45 05-08-2009
    01MDM



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

    Код:
     
    @echo off
    setlocal enabledelayedexpansion
     
    for /f %%i in (List_stores.txt) do (
         set "num=%%i"
         set "num=!num:~-2!"
         echo !num!
    )
     

     
    Или
     

    Код:
     
    @echo off
    setlocal
     
    for /f %%i in (List_stores.txt) do call:set "%%i"
    goto:eof
         
    :set
    set "num=%~1"
    set "num=%num:~-2%"
    echo %num%
     

     
     
    Добавлено:
    Soloveu

    Цитата:
    да я и по русски вводил, но там вообще крякозябли получаются...

    Вводил где?
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:28 05-08-2009
    garri671



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет!
    Подскажите в чем ошибка надо по сетке внести изменения в реестр и второй вопрос при обновлении Виндов на компах в домене включился фаервол, есть ли решения его по сети вырубить (АД-нет). Заранее благодарен.
    1.bat
    @echo off
      chcp 1251
      setlocal
      pushd %0\..
      for /f %%i in (comp.txt) do (  
        echo Now try controller: %%i
        ping -n 1 %%i > nul
        if errorlevel 1 (  
          echo Ping %%i error
          echo.
        )  else call reg_.bat %%i  
      )
     
    reg_.bat____________________________
     
    Reg Add \\%1\HKLM\SOFTWARE\Policies\Microsoft\FirewallPolicy
    Reg Add \\%1\HKLM\SOFTWARE\Policies\Microsoft\FirewallPolicy\StandardProfile
    Reg Add \\%1\HKLM\SOFTWARE\Policies\Microsoft\FirewallPolicy\StandardProfile /v EnableFirewall /t REG_DWORD /d 00000000
    Reg Add \\%1\HKLM\SOFTWARE\Policies\Microsoft\FirewallPolicy\DomainProfile
    Reg Add \\%1\HKLM\SOFTWARE\Policies\Microsoft\FirewallPolicy\DomainProfile /v EnableFirewall /t REG_DWORD /d 00000000

    Всего записей: 133 | Зарегистр. 18-07-2007 | Отправлено: 11:51 06-08-2009
    Gizmentiy

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день!
    Помогите с такой задачей...
    Есть директория в ней есть файл вида ???.zip
    как имя этого файла присвоить переменной SET Fname1=???.zip
    Имя самого файла заведомо не извесно, только количество символов.
    Спасибо!

    Всего записей: 4 | Зарегистр. 16-01-2009 | Отправлено: 13:10 06-08-2009 | Исправлено: Gizmentiy, 13:12 06-08-2009
    01MDM



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

    Код:
     
    @echo off
    chcp 1251
    setlocal
     
    pushd "%~dp0\.."
     
    for /f %%i in (comp.txt) do (  
        echo Now try controller: %%i
        ping -n 1 %%i 1>nul && call reg_.bat || echo Ping %%i error & echo.
    )  
     

     
    В 'reg add' необязательно сначала создавать параметр, а потом добавлять значение. Можно одной командой:

    Код:
     
    Reg Add \\%1\HKLM\SOFTWARE\Policies\Microsoft\FirewallPolicy\StandardProfile /v EnableFirewall /t REG_DWORD /d 0
     

     
     
     
     
    Добавлено:
    Gizmentiy
    При условии, что нет ?.zip и ??.zip

    Код:
     
    @echo off
    for /f %%i in ('dir /b ???.zip') do set "Fname1=%%i"
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 14:26 06-08-2009 | Исправлено: 01MDM, 14:57 06-08-2009
    FIZIK



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Люди, помогите решить задачку.
    Есть задача прибивать все терминальные сессии кроме сессий пользователей из определенного списка.
    Список пользователей я получаю так:
    Список активных сессий:
    query user |grep "rdp#"| gawk "{print $3,$1}"|sed "s/>//g"
    Список отключенных сессий:
    query user |grep -v "rdp#"| gawk "{print $2,$1}"|sed "s/>//g"
     
    вывод в формате
    IDСесссии Username
     
    Хочу направить в файл ID cсессий, а потом задействовать след-ю конструкцию:
    for /F %%i IN (имя файла с ид сессий) DO reset session %%i
     
    Что дальше, ума не приложу. Надо профильтровать вывод на определенных пользователей. Но к сожалению grep напрочь отказывается воспринимать кириллицу. А у меня 90% имен пользователей на русском.
     
    Поможите, люди добрые, советом.

    Всего записей: 193 | Зарегистр. 09-08-2004 | Отправлено: 15:01 06-08-2009
    Gizmentiy

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
     
    Спасибо Большое!

    Всего записей: 4 | Зарегистр. 16-01-2009 | Отправлено: 15:02 06-08-2009
    01MDM



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

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

    findstr воспринимает.
     
    Кстати, проверил, grep тоже воспринимает:

    Код:
     
     
    C:\>  > chcp 1251
    Текущая кодовая страница: 1251
     
    C:\> for %i in (Иван Ivan Петр Petr) do @echo %i 1>>1.txt
     
    C:\> for %i in (Иван Петр) do @grep %i 1.txt
    Иван
    Петр
     
    С:\>
     

     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 15:18 06-08-2009 | Исправлено: 01MDM, 15:27 06-08-2009
    FIZIK



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Спасибо человечище!!! chcp 1251 - то что надо.

    Всего записей: 193 | Зарегистр. 09-08-2004 | Отправлено: 15:34 06-08-2009
       

    Страницы: 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 104 105 106 107 108 109 110 111 112 113 114 115 116 117

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 7
    vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru