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

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

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

vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:54 27-04-2007 | Исправлено: Elroir, 03:59 10-09-2007
    01MDM



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

    Код:
     
    @echo off
    setlocal enabledelayedexpansion
    set a=325.14
    set b=107.88
     
    for /f "tokens=1,2 delims=." %%i in ('echo %a%') do (
        set int_a=%%i
        set flo_a=%%j
        )
    if "%flo_a:~0,1%"=="0" (
        set "flo_a=%flo_a:~1,1%0"
        )
     
    for /f "tokens=1,2 delims=." %%i in ('echo %b%') do (
        set int_b=%%i
        set flo_b=%%j
        )
    if "%flo_b:~0,1%"=="0" (
        set "flo_b=%flo_b:~1,1%0"
        )
     
    set /a sumInt=%int_a%+%int_b%
    set /a sumFlo=%flo_a%+%flo_b%
    if %sumFlo% geq 100 (
        set /a sumInt+=1
        set /a sumFlo-=100
        call:setFlo
        )
     
    set SUM=%sumInt%.%sumFlo%
    echo %SUM%
     
    :setFlo
    set "sumFlo=0%sumFlo%"
     

     
    Нетрадицонная математика  
     
    Добавлено:

    Код:
     
    Вместо set "flo_a=%flo_a:~1,1%0"
               set "flo_a=%flo_a:~1,1%"
     
               set "flo_b=%flo_b:~1,1%0"
               set "flo_b=%flo_b:~1,1%"
     

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

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

    Цитата:
    @echo off  
    setlocal  
    for /f %%a in (1.txt) do (  
    if not defined first set "first=%%a"  
    set "second=%%a"  
    )  
    for /f "delims=. tokens=1,2" %%a in ("%first%") do set "int1=%%a" & set "frac1=%%b"  
    for /f "delims=. tokens=1,2" %%a in ("%second%") do set "int2=%%a" & set "frac2=%%b"  
    if %frac1% LSS 10 set "frac1=%frac1:~-1%"  
    if %frac2% LSS 10 set "frac2=%frac2:~-1%"  
    set /a "fr_sum=frac1+frac2"  
    set /a "int_sum=int1+int2"  
    if %fr_sum% GTR 99 (  
    set /a "int_sum+=1"  
    set "fr_sum=%fr_sum:~1%"  
    )  
    echo %int_sum%.%fr_sum%>2.txt  

     
    вот в этом варианте, если допустим в файле больше цифр чем две к примеру:  
    444.00
    555.00
    666.00
    666.00
    и.т.д.
    как дописать чтобы он считал все?

    Всего записей: 53 | Зарегистр. 26-07-2007 | Отправлено: 18:07 12-08-2007
    NIKZZZZ



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

    Код:
    set a=12.3456
    set b=56.7
    setlocal enabledelayedexpansion
    for /f "delims=. tokens=1,2" %%a in ("%a%") do (
      if "%%b"=="" (set "a=%%a00") else (set "tmp=%%b00" & set "a=%%a!tmp:~0,2!")
    )
    for /f "delims=. tokens=1,2" %%a in ("%b%") do (
      if "%%b"=="" (set "a=%%a00") else (set "tmp=%%b00" & set "b=%%a!tmp:~0,2!")
    )
    set /a c=%a% + %b%
    set c=%c:~0,-2%.%c:~-2%
    echo %c%

     
    Понимает любые формы записи числа:
    123.4567
    123.4
    123.
    123
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 18:17 12-08-2007
    Elroir



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

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


    Код:
     
    @echo off
    setlocal
    set "sum=0.00"
    for /f %%a in (1.txt) do call :math %%a
    echo %sum%>2.txt
    goto :EOF
    :math
    set "first=%sum%"
    set "second=%1"
    for /f "delims=. tokens=1,2" %%a in ("%first%") do (set "int1=%%a" & set "frac1=%%b")
    for /f "delims=. tokens=1,2" %%a in ("%second%") do (set "int2=%%a" & set "frac2=%%b")
    echo frac1=%frac1%
    echo frac2=%frac2%
    if %frac1% LSS 10 set "frac1=%frac1:~-1%"
    if %frac2% LSS 10 set "frac2=%frac2:~-1%"
    set /a "fr_sum=frac1+frac2"
    set /a "int_sum=int1+int2"
    if %fr_sum% GTR 99 (
    set /a "int_sum+=1"
    set "fr_sum=%fr_sum:~1%"
    )
    set "sum=%int_sum%.%fr_sum%"
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:23 12-08-2007
    MsdLamer

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

    Всего записей: 53 | Зарегистр. 26-07-2007 | Отправлено: 18:32 12-08-2007
    NIKZZZZ



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

    Код:
    set a=12.3456
    set b=56.7
    setlocal enabledelayedexpansion
    for /f "delims=. tokens=1,2" %%a in ("%a%") do (
      if "%%b"=="" (set "a=%%a00") else (set "tmp=%%b00" & set "a=%%a!tmp:~0,2!")
    )
    for /f "delims=. tokens=1,2" %%a in ("%b%") do (
      if "%%b"=="" (set "a=%%a00") else (set "tmp=%%b00" & set "b=%%a!tmp:~0,2!")
    )
    set /a c=%a% * %b%
    set c=%c:~0,-4%.%c:~-4%
    echo %c%

    Деление:

    Код:
    set a=12.3456
    set b=56.7
    setlocal enabledelayedexpansion
    for /f "delims=. tokens=1,2" %%a in ("%a%") do (
      if "%%b"=="" (set "a=%%a0000") else (set "tmp=%%b0000" & set "a=%%a!tmp:~0,4!")
    )
    for /f "delims=. tokens=1,2" %%a in ("%b%") do (
      if "%%b"=="" (set "a=%%a00") else (set "tmp=%%b00" & set "b=%%a!tmp:~0,2!")
    )
    set /a c=%a% / %b%
    set c=%c:~0,-2%.%c:~-2%
    echo %c%

     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 18:38 12-08-2007
    dSasha

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я уже пытался задать вопрос, но его проигнорировали, к сожалению. Задача была - автоматически добавить несколько маршрутов после дозвона до провайдера.
    Цитата:
    Источник: RemoteAccess
    Код (ID): 20158
    Я нашел команду создания триггера событий и создал триггер события с кодом 20158:
    Код:
    EVENTTRIGGERS /Create /EID 20158 /RU <пользователь> /RP <пароль> /TK route.bat
    Но он срабатывает при любом подключении. Вопрос:  
         Можно ли создать триггер, срабатывающий только при определённом подключении из списка:
    Цитата:
    Успешно выполнено подключение пользователя "demo"к "demo", с помощью устройства "COM1".
    Успешно выполнено подключение пользователя "mobile"к "CDMA", с помощью устройства "COM8".
    Успешно выполнено подключение пользователя "beeline"к "beeline", с помощью устройства "COM2".
    ?

    Всего записей: 30 | Зарегистр. 15-06-2007 | Отправлено: 20:40 12-08-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    dSasha
    По RASDial - анализируй какие соединения активны и в зваисимости от этого выполняй подчиненные батники

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 21:13 12-08-2007
    dSasha

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KapralBel
    Какие активны и по ipconfig видно. Хотелось бы выбрать именно то, активность которого только что изменилась. Это трудно?

    Всего записей: 30 | Зарегистр. 15-06-2007 | Отправлено: 21:43 12-08-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    dSasha
    К сожалению ЕТ - не различает по комментарию
    А так надо проверять Журнал событий и смотреть описание
    Может найдешь утилиту которая это может делать
    или если установлен powerShell - то анализировать там

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 22:07 12-08-2007
    dSasha

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ну что ж, спасибо. В принципе, и так работает. А разбираться в powerShell не разобравшись в стандартных командах - не ст0ит. Просто хотелось сделать ещё проще, ну да ладно.

    Всего записей: 30 | Зарегистр. 15-06-2007 | Отправлено: 22:55 12-08-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    dSasha
    Взглянь в сторону EventQuery.vbs
    или с PowerShell я смогу помочь
    У меня уже разработан скрипт по анализу записей в журнале событий
    Можно его доработать

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 23:18 12-08-2007
    dSasha

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    С этим другая трабла
    Цитата:
    C:\Documents and Settings\1>EventQuery.vbs
    Сервер сценариев Windows (Microsoft ®) версия 5.6
    © Корпорация Майкрософт (Microsoft Corp.), 1996-2001. Все права защищены.
    CScript.exe - Ошибка приложения
     Инструкция по адресу "0х5с957890" обратилась к памяти по адресу "0x00000008". Память не может быть "read"
    И так постоянно. С WScript.exe аналогично.

    Всего записей: 30 | Зарегистр. 15-06-2007 | Отправлено: 02:42 13-08-2007
    NIKZZZZ



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

    Цитата:
    Хотелось бы выбрать именно то, активность которого только что изменилась. Это трудно?

     
    Создаешь файл текущей активности.
    Ipconfig >conf.txt или как-либо еще.
     
    При срабатывании тригера создаешь новый файл
    Ipconfig >confnew.txt
    Сравниваешь
    Fc conf.txt confnew.txt
    На основе результатов выполняешь необходимые действия
    Обновляешь
    Type confnew.txt conf.txt
     
     
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 05:25 13-08-2007
    dardreams



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

    Код:
    net view|find "admin"

    в этой сроке должна появится надпись что то типа  
    \\ADMIN, вопрос как её преобразовать в переменную ?
    что бы %x% ='\\ADMIN"

    Всего записей: 100 | Зарегистр. 29-05-2007 | Отправлено: 07:07 13-08-2007
    Maza Faka



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

    Код:
     
    @echo off
    for /f %%a in ('net view ^| find "admin"') do set x=%%a
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:32 13-08-2007
    dardreams



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Maza Faka
    Что то он у меня не работает .
    А можно это не в батнике а прямо в консоле
     
    Добавлено:
    Maza Faka
    Извени, это я косячник.
    Слушай я на прошлой неделе задавал вопрос, как можно читать русский текст  из файла, вот просто создаешь файл текстовый пишешь там любой текст вот такой код

    Код:
     
    @echo off  
     
     
    setlocal enabledelayedexpansion  
    for /f "tokens=*" %%a in (temp.txt) do (
    set "count=0"  
    set "text=%%a"  
    call :show)
     
    goto :EOF                                
    :show  
    if "!text:~%count%,1!"=="" (Echo. &set /a x=%x%+1&goto :EOF)  
     
    set word=!text:~%count%,1!
     
     
    hs_Echo !text:~%count%,1!
    ::::::::::::::::::::::::::::::::echo !text:~%count%,1!    так тоже не работет !
     
     
    set /a "count+=1"  
     
    goto show
     
     
     

    Всего записей: 100 | Зарегистр. 29-05-2007 | Отправлено: 07:41 13-08-2007
    KapralBel



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

    Цитата:
    Нет текст именно в ANSI и я же говорю что даже стандртный ECHO не работает

    То что ты мне прислал действительно в ANSI но код

    Код:
     echo off
    chcp 1251>nul
    setlocal enabledelayedexpansion  
    for /f "tokens=*" %%a in (temp.txt) do (
    set "count=0"  
    set "text=%%a"  
    call :show)
     
    goto :EOF                                  
     
    :show  
    if "!text:~%count%,1!"=="" (Echo. &set /a x=%x%+1&goto :EOF)  
     
    hs_echo "!text:~%count%,1!"  
     
    set /a "count+=1"  
     
    goto show  

    Работает и выводит русский текст
     
    Добавлено:
    Может у тебя проблемы с консолью?
    Вообще там русский текст выводиться?

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 08:27 13-08-2007
    dardreams



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    KapralBel
    нет, русский текст выводится нормально если его прямо в bat файле писать .
     
    Добавлено:
    KapralBel
    Можешь выслать на мою почту
    МойНик@mail(точка)ru
    2 файл, готовый бат и текстовый.

    Всего записей: 100 | Зарегистр. 29-05-2007 | Отправлено: 08:37 13-08-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    dardreams
    Отослал
    У меня все работает
     
    Бат без изменений то что в моем предыдущем посте (и то что ты постил сам, страницы 3-4 назад)
     
    Добавлено:
    Твой Майл.Ру заявил что мое письмо СПАМ
    http://rapidshare.com/files/48665929/BatFile.zip.html

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 09:45 13-08-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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 3
    vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru