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

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



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Не понял в скрипте самого главного, как надо изменить код, чтобы вывести не самого старого (olduser), а самого нового юзера?

    Всего записей: 73 | Зарегистр. 24-12-2007 | Отправлено: 21:08 28-10-2009
    wolf0425



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

    Цитата:
    Не понял в скрипте самого главного, как надо изменить код, чтобы вывести не самого старого (olduser), а самого нового юзера?
    что, я чего-то лишнее отрезал, когда выдирал?
     
    о, точно, в оригинале у последнего цикла была инверсия:
    for /f "tokens=3 delims=-=" %%a in ('set ntuser ^| sort /r') do
    когда я хвост сокращал - и ее зачем-то сократил.
     
    но можно просто "&& goto:selected" из конца этого цикла убрать - тогда цикл проскочит по всем именам до последнего, самого нового, его и запомнит. получится врядли медленнее. Это у меня там в do было еще проверок наворочено

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 23:00 28-10-2009 | Исправлено: wolf0425, 23:03 28-10-2009
    Ortios



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Уфф, спасибо, давно у меня такой паники не было.

    Всего записей: 73 | Зарегистр. 24-12-2007 | Отправлено: 23:18 28-10-2009
    mugil_cephalus

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

    Цитата:
    Но параметр 2 возвращается пустой

    может из-за того, что endlocal закрывает оба setlocal'a, в том числе, соответственно,  и SETLOCAL ENABLEDELAYEDEXPANSION    

    Цитата:
    endlocal & set "%2=%paramss%"  
    echo !%2! >> log.log  

     

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 00:52 29-10-2009 | Исправлено: mugil_cephalus, 02:32 29-10-2009
    den06051979



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста!
    Мне нужно в bat скрипте проверить условие такого рода.
    Bat скрипт будет запускаться при старте системы.
    Если текущее время больше 8-00 утра и меньше 23-00 вечера то запускаем определённую программу!
    Как это реализовать средствами bat?

    Всего записей: 21 | Зарегистр. 21-12-2005 | Отправлено: 06:59 29-10-2009 | Исправлено: den06051979, 07:00 29-10-2009
    GRom_V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Как можно создать пустой документ в формате ~.rtf через консоль?

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 07:24 29-10-2009
    01MDM



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

    Код:
     
    @echo off
    setlocal
     
    for /f %%i in ('time /t') do set "t=%%i"
    if 1%t::=% gtr 10800 (
        if 1%t::=% lss 12300 echo 8:01-22:59
    )
     

     
    GRom_V

    Код:
     
    cd.>1.rtf
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 08:33 29-10-2009 | Исправлено: 01MDM, 08:56 29-10-2009
    Maqentaer



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

    Код:
     
    for /F "tokens=1-4 delims=:., " %%a in ('time /t') do (
        if %%a GEQ 8 (
            if %%a LSS 23 (
                start notepad.exe
            )
        )
    )
     

    Всего записей: 71 | Зарегистр. 18-05-2008 | Отправлено: 08:36 29-10-2009
    slay1212

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
     Вариант без endlocal и любые другие - опробована куча комбинаций не помог.  
    Строка присваиваемая параметру - длинная строка параметров разделенная пробелами  
    Просто вызываемый батник разбирает/редактирует файл параметров имя=значение.
    Хотел их все в одну строку запихать и вернуть параметром а не получилось. Ну сделаю через файл

    Всего записей: 336 | Зарегистр. 28-05-2008 | Отправлено: 09:16 29-10-2009
    segreich

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

    Цитата:
    А может лучше никуда ничего не переносить. а указать nerocmd последовательно копировать файлы в указанной папке?

    Тоже вариант, спасибо за оптимизацию.

    Всего записей: 29 | Зарегистр. 24-08-2006 | Отправлено: 09:25 29-10-2009
    den06051979



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

    Цитата:
    for /F "tokens=1-4 delims=:., " %%a in ('time /t') do (
        if %%a GEQ 8 (
            if %%a LSS 23 (
                start notepad.exe
            )
        )
    )  

    А как мне регулировать время срабатывания?
    Например с 8-00 утра и до 23:59 вечера?
    Или какое либо другое?

    Всего записей: 21 | Зарегистр. 21-12-2005 | Отправлено: 09:40 29-10-2009
    Maqentaer



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

    Код:
    for /F "tokens=1-4 delims=:., " %%a in ('time /t') do (
        if %%a GEQ 8 (
            if %%b GEQ 0 (
                if %%a LEQ 23 (
                    if %%b LEQ 59 (
                        start notepad.exe
                    )
                )
        )
    )

    Всего записей: 71 | Зарегистр. 18-05-2008 | Отправлено: 10:16 29-10-2009
    NIKZZZZ



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

    Цитата:
    Как можно создать пустой документ в формате ~.rtf через консоль?

     
    Запустить WordPad (write.exe), далее с помощью nircmd послать в него коды завершения работы.
     
    А более просто - создать пустой rtf файл и копировать его в нужное место с нужным именем.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 10:30 29-10-2009 | Исправлено: NIKZZZZ, 10:33 29-10-2009
    den06051979



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

    Цитата:
    for /F "tokens=1-4 delims=:., " %%a in ('time /t') do (
        if %%a GEQ 8 (
            if %%b GEQ 0 (
                if %%a LEQ 23 (
                    if %%b LEQ 59 (
                        start notepad.exe
                    )
                )
        )
    )  

    Данный код не срабатывает на нужный диапазон!

    Всего записей: 21 | Зарегистр. 21-12-2005 | Отправлено: 12:16 29-10-2009
    Maqentaer



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    den06051979
    прошу прощения, не проверил, глупая получилась ошибка :)
     
    вот сделал новую версию, хотя получился довольно-таки большой код, зато универсальный :)

    Код:
     
    set begin=8:00
    set end=23:59
     
    for /f "tokens=1-4 delims=:., " %%a in ("%begin%") do set b_h=%%a&set b_m=%%b
    if "%b_h:~0,-1%" == "0" set b_h=%b_h:~1,1%
    if "%b_m:~0,-1%" == "0" set b_m=%b_m:~1,1%
     
    for /f "tokens=1-4 delims=:., " %%a in ("%end%") do set e_h=%%a&set e_m=%%b
    if "%e_h:~0,-1%" == "0" set e_h=%e_h:~1,1%
    if "%e_m:~0,-1%" == "0" set e_m=%e_m:~1,1%
     
    for /f "tokens=1-4 delims=:., " %%a in ('time /t') do set h=%%a&set m=%%b&set p=%%c
    if "%h:~0,-1%" == "0" set h=%h:~1,1%
    if "%m:~0,-1%" == "0" set m=%m:~1,1%
    if /i "%p%" == "pm" if not %h% == 12 set /a h=%h%+12
    if /i "%p%" == "am" if %h% == 12 set h=0
     
    if %h% equ %b_h% if %m% geq %b_m% goto pass
    if %h% equ %e_h%  if %m% leq %e_m% goto pass
    if %h% gtr %b_h% if %h% lss %e_h% goto pass
     
    goto :eof
     
    :pass
    start notepad.exe
     

     
    хотя параметры b_h, b_m, e_h, e_m можно задавать отдельно и без нулей вначале, но так как я сделал, удобнее использовать, и код можно давать людям мало разбирающихся в batch :)
     
    и еще можно вместо 'time /t' написать "%time%" и тогда можно убрать проверку на am и pm
     
    Добавлено:
    вот по просьбе автора вопроса, простой вариант решения:

    Код:
     
    for /f "tokens=1-4 delims=:., " %%a in ("%time%") do set h=%%a&set m=%%b
    if %h% equ 8 if %m% geq 59 goto pass
    if %h% equ 23  if %m% leq 59 goto pass
    if %h% gtr 8 if %h% lss 23 goto pass
    goto :eof
    :pass
    start notepad.exe
     

    Всего записей: 71 | Зарегистр. 18-05-2008 | Отправлено: 12:57 29-10-2009 | Исправлено: Maqentaer, 14:10 29-10-2009
    Babuas

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Сорри если уже было, нет времени рыть столько страниц. Как реализовать перезагрузку Windows 7 одной кнопкой, а также организовать смену пользователя в Windows 7 по нажатию одной кнопки? заранее спасибо за помощь.

    Всего записей: 31 | Зарегистр. 22-03-2006 | Отправлено: 14:42 29-10-2009
    dscp50

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите с решением, пожалуйста.
    Переодически рушится инет, пока по непонятным причинам... вот пока причины непонятны, требуется скриптец, который проверяет интернет-соединение на обмен (ping)... и если пинг не проходит, то хотелось что бы скриптец сам реконнектился к инету. (проблема, почему-то, решается именно так, после реконнекта пакеты проходят).
    Никогда не страдал *.bat программированием, и, к сожалению, нет времени разбираться во всем. Надеюсь на Вашу помощь, товарищи. С меня - вознаграждение в виде пополнения баланса мобильного телефона.
     
    схема, я думаю, понятна
     
    1:repeat "ping" until "Превышен интервал ожидания для запроса."  
       then:
       begin
       close connection;
       connect;
       end;
       go to 1.

    Всего записей: 19 | Зарегистр. 29-11-2008 | Отправлено: 15:40 29-10-2009
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Babuas
    а через ACPI и сочетания клавиш в win'de?
    или батник с командой (в winxp - shutdown, в 7-ой - не знаю, посмотри help) , затем ярлык для него, затем hotkey для ярлыка

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 15:43 29-10-2009 | Исправлено: mugil_cephalus, 15:53 29-10-2009
    01MDM



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

    Код:
     
    @echo off
     
    :check
    1>nul ping -n 1 ya.ru || (
     
        echo disconnect\connect - зависит от типа соединения
     
    )
     
    :: Если есть sleep.exe, timeout.exe или nircmd.exe, то для паузы можно использовать их.
    1>nul ping -n 6 localhost
    goto:check
     

     
    Выход по Ctrl-Z
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:21 29-10-2009 | Исправлено: 01MDM, 16:21 29-10-2009
    figaro84

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    привет всем!
    Проблема в следующем!
    батник запускается 1й раз ручками, при запуске от прописывает себя в назн. задания, при повторном автоматическом запуске по расписанию он сравнивает 2 файла из системной папки и результат записывает в резюфайл. Это была суть.. проблема... при 1м авто запуске он записывает результат, но оставляет рабочим каталогом системный, тот где сравнивал файлы, и, соответственно, не запускает при повтовном авто запуске батник, т.к. его нет в системной папке...
    как это исправить...???
    вот сам батник:
    @echo off
    at /delete /yes
    at 14:50 /interactive /every: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 %cd%\os_kr1_1.bat ^>%cd%\result.txt
    title kontr work #1_1
    date /t  
    time /t
    %systemdrive%
    cd %systemroot%\system32
    fc /a autoexec.nt config.nt
     
     
    Буду очень признателен за любую помощь!

    Всего записей: 3 | Зарегистр. 27-10-2009 | Отправлено: 18:44 29-10-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