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

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    У меня в nnCron команда для синхронизации уже лет пять наверно  выглядит так:

    Код:

    cmdtime SYNC /T /M:1000000000 time.windows.com fartein.ifi.uio.no tick.usask.ca ntp1.sp.se clock.psu.edu timelord.uregina.ca timex.cs.columbia.edu swisstime.ethz.ch

    по быстрому можно так:

    Код:

    cmdtime /P SYNC

    Служба времени виндовс отключена и отдыхает за ненадобностью. Хотя, если например в рабочей группе есть компы, не подключенные к интернету, то можно на одном компьютере с инетом запустить w32time и остальные синхронизировать с ним

    Код:

    cmdtime SYNC 192.168.1.2

    Консольная cmdtime.exe(57 Кб архив) живет тут  
    http://www.softshape.com/download/cmdtime.zip
     

    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 06:03 12-08-2007 | Исправлено: igor_andreev, 07:15 12-08-2007
    01MDM



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

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



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

    Код:
    if %PingGood%==TTL (    
        goto TimeUpdate    
        ) else (    
        GOTO:EOF    
        )
       
     
    я не могу сообразить (башка дырявая) в этом куске кода, как я понимаю, проверяется условие или есть пинг на гугль (собственно, или есть интернет). так вот, после метки "TimeUpdate" стоят 2 команды, а именно -  
     

    Код:
    net time /setsntp:"ntp2.cs.wisc.edu ntp1.cs.wisc.edu"  
    w32tm /resync

     
    будут ли они выполнены ОБЕ при переходе на метку, или только первая, посколку нужно чтобы выполнялись обе.
    и еще, кусок  
     

    Код:
    else (    
    GOTO:EOF  )  

     
    навевает на мысль, что если интернета нет ("else" - условие "if" не выполнено) то будет осуществлен переход к концу файла ("EOF" - End Of File) и прекращена работа батника. верна ли моя предпосылка? если да, то не лучше ли будет в начале батника поставить метку для возврата на команду проверки наличия интернета и пинать не в конец файла, а снова назад? чтобы синхронизация времени все-таки произошла, рано или поздно ...

    Всего записей: 119 | Зарегистр. 11-08-2007 | Отправлено: 09:25 12-08-2007 | Исправлено: dominiksus, 09:26 12-08-2007
    NIKZZZZ



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

    Цитата:
    будут ли они выполнены ОБЕ при переходе на метку

    Будут.

    Цитата:
    и пинать не в конец файла, а снова назад?

    Можно и так, но желательно поставить паузу между попытками.
     

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

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Помогите подправить код моего пакетника, для возможности запуска с параметрами.
    Например: start_dt347.bat 0 "C:\1.iso" "C:\1.exe"
     
    Читать дальше..

    Всего записей: 348 | Зарегистр. 27-04-2006 | Отправлено: 11:53 12-08-2007
    NIKZZZZ



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

    Код:
    set number=%1
    rem Полный путь до образа диска (в "")
    set image=%2
    rem Полный путь до исполняемого файла (в "")
    set exe=%3

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

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

    Всего записей: 348 | Зарегистр. 27-04-2006 | Отправлено: 12:14 12-08-2007
    01MDM



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

    Цитата:
    net time /setsntp:"ntp2.cs.wisc.edu ntp1.cs.wisc.edu"  
    w32tm /resync
     

     
    1.Оставь только w32tm /resync, значения для ntp-серверов итак уже в реестре.
    2.

    Цитата:
    батник почему-то не работает, мелькает черное окно и все

    Как ты его запускаешь? И где он лежит? Перемести его %PATH%, или указывай к нему полный путь, ну или для проверки запусти мышью. Окно не должно мелькать даже потому, что в начале кода 10-секундная пауза.
    3. Еще раз посмотри, как ты его скопировал, иногда не видишь очевидные ошибки.
     
     

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Лазил по форуму но ответа так и не нашел, подскажите пожалуйста как сделать.
     
    Есть файл 1.txt следующего содержания:
     
    1234
    3456
     
    можно ли сложить эти два числа и результат вывести в файл 2.txt
     
    Спасибо.

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



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

    Код:
     
    @echo off
    setlocal
    for /f %%a in (1.txt) do (
    if not defined first set "first=%%a"
    set "second=%%a"
    )
    set /a "sum=first+second"
    echo %sum%>2.txt  
     


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

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Отлично работает СПАСИБО.  
     
    Но вот в еще маленький вопросик по этой же теме
     
    сейчас сложил в файлике
     
    6655.10
    10197.90
     
    вот эти числа, ответ в файле был 16852, а считаешь в ручную получаешь 16853.
     
    Подскажите в чем проблемка и как решить. Спасибо.

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



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    нужно написать такой bat -файл который запускается на серваке и выполняет следующие функции: 1. Отсылает предупреждение что необходимо выйти из программы, на период обновления (сделано ) 2.если условие не выполнено, то через 2 минуты происходит выгрузка процесса (сделано*) 3. происходит копирование данных в каталоги пользователей (сделано) 4.Необходимо чтобы на том компе на котором произошло обновление отправил средствами Net send сообщение администратору(мне ) что мол обновление произошло без проблем...Как это сделать? по сути надо запустить на компе клиента приложение которое вышлем мне это сообщение .. в админ паке должна быть утилита не помню как называтся которая может запускать на удалееном компе приложение... может быть есть проше вариант...
     
    p.s. * нужно проверить если приложение запущено -выгрузить его, если нет, то тогда продолжать дальше по ходу работы батника....

    Всего записей: 23 | Зарегистр. 22-07-2007 | Отправлено: 16:01 12-08-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MsdLamer
    Поддерживаются только целые числа

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Хорошо, а не целые можно сложить, или это тупик?

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MsdLamer
    Можно, но если заранее не знать сколько цифр после запятой использутеся - очень сложно. Если ты можешь гарантировать, например, что всегда будут толко сотые доли числа - достаточно просто.

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

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    да только сотые доли это точно.
     
    Добавлено:
    и как это будет выглядеть тогда...?  Подскажите плиз.  

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



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

    Код:
     
    @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"
    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
     

    Если число выглядит так - 10.3, то в файле оно должно быть записано как 10.30. Иначе код будет работать неверно.  
     
    Добавлено:
    Стоп. У меня ошибка в коде - пока не используй.

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

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MsdLamer
    Еще вариант, после точки должно быть два разряда

    Код:
     
    @echo off
    set a=6655.10
    set b=10197.90
     
    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
        )
     
    set SUM=%sumInt%.%sumFlo%
    echo %SUM%
     


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



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

    Код:
     
    @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
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 16:44 12-08-2007 | Исправлено: Elroir, 16:45 12-08-2007
    MsdLamer

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

    Всего записей: 53 | Зарегистр. 26-07-2007 | Отправлено: 16:56 12-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