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

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



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

    Цитата:
    Такой способ не работает

     
    А `setlocal enabledelayedexpansion` прописал?
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:43 09-07-2009
    Pr1nt

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

    Цитата:
    А `setlocal enabledelayedexpansion` прописал?

    чОрт! Точно, нету
    Спасибо большое.

    Всего записей: 11 | Зарегистр. 19-04-2007 | Отправлено: 13:49 09-07-2009
    HaK1R



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

    Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 16:10 09-07-2009 | Исправлено: HaK1R, 16:13 09-07-2009
    Dennni

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите пожалуйста как можно автоматизировать смену ip адреса?
    есть скажем текущий 172.16.10.10
    а надо чтобы было 10.192.10.10
    т.е. надо сменить поддиапазон на все ПК с 172.16. на 10.192.
     
    я знаю что сменить IP можно так

    Код:
    netsh interface ip set address name="Подключение по локальной сети" static 10.192.10.10 255.255.0.0 10.192.1.1 1

     
    узнать текущий ip адрес и имя интерфейса можно так

    Код:
    netsh interface ip show address

    он выдаст примерно так

    Цитата:
    C:\Documents and Settings\Admin>netsh interface ip show address
     
    Настройка интерфейса "Подключение по локальной сети"
        DHCP разрешен:                        Нет
        IP-адрес:                             172.16.10.10
        Маска подсети:                        255.255.0.0
        IP-адрес:                             10.160.24.77
        Маска подсети:                        255.255.0.0
        Основной шлюз:                      172.16.1.1
        Метрика шлюза:                      0
        Метрика интерфейса:                   0

    проблема в том чтобы найти как то первую строку где написано точно имя "Подключение по локальной сети"
    и строку где написан первый ip     IP-адрес:                             172.16.10.10
    и подставить в первую команду это имя и последние 2 цифры .10.10
     
    т.е. батник должен автоматом переводить из одного поддиапазона в другой не сохраняя последние 2 цифры ip адреса.

    Всего записей: 29 | Зарегистр. 13-09-2007 | Отправлено: 16:43 09-07-2009
    HaK1R



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

    Код:
    @echo off
    for /f "tokens=1,2*" %%a in ('netsh interface ip show address') do (set "name=%%~c"&goto :1)
    :1
    for /f "tokens=3,4 delims=." %%a in ('netsh interface ip show address ^| find /i "IP"') do (set "a=%%a"&set "b=%%b"&goto :2)
    :2
    netsh interface ip set address name="%name%" static 10.192.%a%.%b% 255.255.0.0 10.192.1.1 1
     

    Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 18:17 09-07-2009
    Dennni

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    HaK1R, спасибо огромное работает!!! Сам бы я не дотумкал

    Всего записей: 29 | Зарегистр. 13-09-2007 | Отправлено: 10:34 10-07-2009
    maa78s

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите пожалуйста как можно удалить файлы из определенной дирректории, размер которых меньше 200 кБайт.

    Всего записей: 17 | Зарегистр. 10-07-2009 | Отправлено: 10:41 10-07-2009
    01MDM



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

    Код:
     
    @echo off
    for %%i in ("SomeDir\*") do if %%~zi lss 204800 del "%%i"
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:06 10-07-2009
    5555555



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    мдасс, разрослись "задачи на..."
    возможно было, но:
    из командного файла вызвать скрипт vbs для чтения занчения реестра, передать значение командному файлу...
    Голова сёня вообще не работает

    Всего записей: 2589 | Зарегистр. 01-04-2004 | Отправлено: 11:10 10-07-2009
    HaK1R



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

    Код:
    @echo off
    for /f "tokens=*" %%a in ('dir /b /a-d "c:\"') do (if %%~za LSS 204800 (del /q /s "%%~fa"))

    Всего записей: 136 | Зарегистр. 04-05-2009 | Отправлено: 11:17 10-07-2009 | Исправлено: HaK1R, 11:22 10-07-2009
    maa78s

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

    Всего записей: 17 | Зарегистр. 10-07-2009 | Отправлено: 11:19 10-07-2009
    Maza_Faka



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

    Цитата:
    для чтения занчения реестра

    Чем не устраивает команда

    Код:
     
    Reg Query
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 11:22 10-07-2009
    5555555



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

    Цитата:
    Reg Query
    а как вычленить значение? уже все позабыл

    Всего записей: 2589 | Зарегистр. 01-04-2004 | Отправлено: 11:34 10-07-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    5555555
    В простейшем случае так:

    Код:
     
    @echo off
    setlocal
     
    set exec='reg query hkcu\environment /v test'
    for /f "tokens=3" %%i in (%exec%) do set "value=%%i"
     
    echo %value%
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:43 10-07-2009
    5555555



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    пасиб, жаль номер токена принудительно придется править на каждый параметр (их имена пробелы содержат)...
    И все-таки реально ли:
    из командного файла вызвать скрипт vbs для чтения значения реестра, передать значение командному файлу...

    Всего записей: 2589 | Зарегистр. 01-04-2004 | Отправлено: 11:59 10-07-2009
    01MDM



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

    Цитата:
    жаль номер токена принудительно придется править на каждый параметр (их имена пробелы содержат)...

     
    Все зависит от ситуации, но можно и не менять токен, а установить в качестве разделителя "Z",
    Создал параметр "zz top" со значением "1 2 3"

    Код:
     
    @echo off
    setlocal
     
    set exec='reg query hkcu\environment /v "zz top"'
     
    for /f "tokens=2 delims=Z" %%i in (%exec%) do call:set %%i
    echo %value%
    goto:eof
     
    :set
    set "value=%*"  
     

     
    Или вообще получить строку и заменить все варианты REG_* на удобный разделитель:

    Код:
     
    @echo off
    setlocal
     
    set exec='reg query hkcu\environment /v "zz top"'
     
    for /f "tokens=*" %%i in (%exec%) do set "str=%%i"
     
    set "str=%str:REG_SZ=Ъ%"
    set "str=%str:REG_EXPAND_SZ=Ъ%"
    set "str=%str:REG_DWORD=Ъ%"
     
    for /f "tokens=2 delims=Ъ" %%i in ("%str%") do call:set %%i
     
    echo %value%
    goto:eof
     
    :set
    set "value=%*"
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:51 10-07-2009 | Исправлено: 01MDM, 13:27 10-07-2009
    ycmah



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Help.
     
    Задачка. Есть текстовые фалики вида - OADP001.TXT, OADP002.TXT и т.д.
    Файлики создаются каждый день. Задачка состоит в том, чтобы написать батник, который считает с определенной строки внутри текстовика дату, создаст папку с этой датой и запихнет туда текстовик(и).  
     

    Код:
                                                             62320075 08JUL8

     
    Так выглядит дата внутри текстовика. Точнее это вся первая строка целиком

    Всего записей: 23 | Зарегистр. 17-09-2006 | Отправлено: 13:31 10-07-2009 | Исправлено: ycmah, 13:31 10-07-2009
    5555555



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

    Цитата:
    заменить все варианты REG_*
    отлично. Спасибо, все уже работает, только интерес остался по поводу передачи переменных из скрипта в пакетник (и наоборот) туда <-> обратно, хотя бы на будущее...

    Всего записей: 2589 | Зарегистр. 01-04-2004 | Отправлено: 13:35 10-07-2009
    01MDM



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

    Цитата:
    только интерес остался по поводу передачи переменных из скрипта в пакетник (и наоборот) туда <-> обратно, хотя бы на будущее...  

     
    Если б разумел... Как вариант, через временный файл. Или составлять гибрид. Когда-то Smitis показывал на примере js. Но как туда что-либо прикрутить?
     

    Код:
     
    @set @x=0 /*
    @echo off
     
    :: start batch part
     
    echo in batch
     
    cscript //nologo //e:jscript %~nx0
     
    exit /b   */
     
    // start Jscript part
    WScript.Echo("in script")
     

     
     
    Добавлено:
    ycmah
    При условии, что строка в файлах первая:

    Код:
     
    @echo off
    setlocal
     
    for %%i in (*.txt) do call:job "%%i"
    goto:eof
     
    :job
    0<%1 set /p "folder="
    for /f "tokens=2" %%i in ("%folder%") do set "folder=%%i"
    2>nul md "%folder%"
    move %1 "%folder%"
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:55 10-07-2009
    levn

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

    Всего записей: 13 | Зарегистр. 17-04-2009 | Отправлено: 15:22 10-07-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