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

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

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

evle (19-03-2008 19:44): Лимит страниц.
Задачи на bat-файлах 5
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 15:21 11-09-2007 | Исправлено: Elroir, 01:52 26-02-2008
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    Ты бы все-таки поосторожнее с переменной PATH...

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 16:46 06-01-2008
    SymA



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите, реально ли перевести эти значки в читабельный вид ? может шрифта какого не хватает ?  
     
    mЮЯ˜Я"Є©V¤ыsџmїс{ё3Є–ыє¤ кgў)НЅЎ+@яыrЂ  
    МI!ТCдщU$"(I {/$jIњ&0ЂЋђЛ(Ж    U±Cз4К(ф в‚ЗџO6|чпНќНює‹мЇR•eК  
     
     

    Цитата:
    king_stiven  
    Добавлено:  
    wolf0425  
    Тогда можно юзать текстовые утилиты, возможно там есть решение. Или включить доп. проверку на пробел или пустую строку(возможно даже и не получится, не пробовал).  

     
     
     
    для меня текстовые утилиты не подходят  
    помогите  

    Цитата:
    включить доп. проверку на пробел или пустую строку
    сюда

    Код:
    @echo off  
    for /f "usebackq tokens=*" %%j in ("text.tmp") do (  
        if not DEFINED p echo %%j>> "text.txt"  
        set /a size+=1  
        call :uio  
    )  
    goto :eof  
    :uio  
    if not DEFINED p (  
        if "%size%" EQU "500" (  
            set p=1  
            set size=  
        )  
    ) else (  
        if "%size%" EQU "50" (  
            set p=  
            set size=  
        )  
    )
    by king_stiven

    Всего записей: 56 | Зарегистр. 10-12-2007 | Отправлено: 17:48 06-01-2008
    01MDM



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

    Цитата:
     
     mЮЯ˜Я"Є©V¤ыsџmїс{ё3Є–ыє¤ кgў)НЅЎ+@яыrЂ  
    МI!ТCдщU$"(I {/$jIњ&0ЂЋђЛ(Ж    U±Cз4К(ф в‚ЗџO6|чпНќНює‹мЇR•eК
     

    Какая кодировка?

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:57 06-01-2008
    SymA



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    текстовый редактор BRED2 показывает кодировку ANSI (1251)
    а вообще - текст из открытого в блокноте mp3 файла . . .

    Всего записей: 56 | Зарегистр. 10-12-2007 | Отправлено: 18:14 06-01-2008 | Исправлено: SymA, 18:15 06-01-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SymA
    И что ты хочешь получить? Ноты?

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:14 06-01-2008
    SymA



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    нет, а хотелось бы
    получу эффект "файла, скопированного с царапанного диска"

    Всего записей: 56 | Зарегистр. 10-12-2007 | Отправлено: 19:19 06-01-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вот объединил код для создания паузы средствами системы без сторонних утилит, даже без ping
    delay.cmd
    Код:
    @echo off
    chcp 1251>nul
    :: Некоторые действия
     
    set "ctime1=%time:~0,-3%"
    set /a "sec1=36000*%time:~0,1%+3600*%time:~1,1%+600*%time:~3,1%+60*%time:~4,1%+10*%time:~6,1%+%time:~7,1%"
    echo Сейчас: %ctime1%
    :: Установите паузу в секундах
    call:sleep 5
    :: Другие действия
     
    set "ctime2=%time:~0,-3%"
    set /a "sec2=36000*%time:~0,1%+3600*%time:~1,1%+600*%time:~3,1%+60*%time:~4,1%+10*%time:~6,1%+%time:~7,1%"
    set /a "math=%sec2%-%sec1%"
    echo Сейчас: %ctime2%. Прошло %sec2%-%sec1%=%math% секунд.
    pause
    goto:eof
     
    :sleep
           echo Пауза в %1 секунд...
           title Установка паузы в %1 секунд...
           set /a "ftime=%time:~6,-3%+%1"
           if %ftime% geq 60 set /a ftime-=60
      :loop
                   set "ctime=%time:~6,-3%"
           if /i %ftime% neq %ctime% goto:loop
    goto:eof

    обилие коментов, математики и прочий мусор удалять не возбраняется
    при большом желании можно поместить в шапку

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 19:22 06-01-2008 | Исправлено: Nagual, 14:37 07-01-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
     
    Да прямо из справки по set сунул, которую он невнимательно прочёл.
     
    SymA  
     
    mp3  бинарный файл, его так разбирать не получится

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 19:25 06-01-2008
    SymA



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    т.е. с этими символами в БАТ вообще ни как ?
    значит и в gif / jpg файлах тоже не покатят манипуляции с символами ?

    Всего записей: 56 | Зарегистр. 10-12-2007 | Отправлено: 19:36 06-01-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SymA
     
    Думаю, что нет. Порежь хотя бы rar ом mp3 кусочками по ~5 килобайт, каждый 11 убирай,  склей, вот и царапины будут, пример я приводил в этой теме не так давно.
     
    Добавлено:
    Nagual
     
    действительно, секунды точно меряет

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 19:48 06-01-2008
    01MDM



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

    Код:
     
    @echo off
    echo %time% start
    call:pause 5
    echo %time% finish
    goto:eof
     
    :pause
    set /a stamp=1%time:~-5,2%+%1
    set stamp=%stamp%%time:~-2,2%
    :loop
    set sec=1%time:~-5,2%%time:~-2,2%
    if not %sec% GEQ %stamp% goto:loop
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:29 06-01-2008 | Исправлено: 01MDM, 20:42 06-01-2008
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    Единственная проблема с ожиданием с помощью цикла - это загрузка CPU.
    Сравни загрузку при использовании sleep.exe или ping, с загрузкой при запуске ожидания в цикле.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 20:29 06-01-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Да, это точно 44-50%. И иногда перескакивает если выставить болше 10 сек. Наверно нужно использовать geq вместо ==

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:40 06-01-2008
    SymA



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven спасибо!
    утилита nerocmd.exe не работает с DVD ?
     
     
    как усовершенствовать, чтобы искалось во вложенных папках ?
    Код:
    for %%a in (*.txt) do echo %%a

     

    Всего записей: 56 | Зарегистр. 10-12-2007 | Отправлено: 22:07 06-01-2008 | Исправлено: SymA, 22:10 06-01-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SymA
     
    утилита nerocmd.exe не работает с DVD ?  
     
    КЛЮЧ --dvd
     
     
    for /f "tokens=*" %%c in ('dir *.txt /b /s /a:-d') do echo %%c

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 23:06 06-01-2008
    SymA



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven Спасибо !
    окрываем "Мой Компьютер"; на C:\ например стоит автозапуск; кликаем по нему и в новом окне открывается прописанный в файле autorun.inf батник
    Код:
    explorer \some_folder\

     
    вопрос: можно сделать так, чтобы C:\some_folder\ открывалось в том же окне что и "Мой Компьютер" ?

    Всего записей: 56 | Зарегистр. 10-12-2007 | Отправлено: 23:32 06-01-2008 | Исправлено: SymA, 23:33 06-01-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    ты прав, пофиксено
    delay_hybrid+js.cmd
    Код:
    rem ( /*
    @echo off
    chcp 1251>nul
    title Установка паузы в милисекундах.
     
    :: Команды до паузы
    cls
    set "ctime1=%time:~0,-3%"
    set /a "sec1=36000*%time:~0,1%+3600*%time:~1,1%+600*%time:~3,1%+60*%time:~4,1%+10*%time:~6,1%+%time:~7,1%"
    echo Сейчас: %ctime1%
    echo Команды до паузы...
     
    cscript //nologo //e:javascript "%0"
     
    :: Команды после паузы
    set "ctime2=%time:~0,-3%"
    set /a "sec2=36000*%time:~0,1%+3600*%time:~1,1%+600*%time:~3,1%+60*%time:~4,1%+10*%time:~6,1%+%time:~7,1%"
    set /a "math=%sec2%-%sec1%"
    echo Сейчас: %ctime2%. Прошло %sec2%-%sec1%=%math% секунд.
    echo Команды после паузы...
     
    pause
    goto:eof
     
    */ )
    function rem() {
    // Установите паузу в милисекундах
    WScript.Sleep(15000)
    }

    Переменная величина в милисекундах выделена красным, то есть в примере используется пауза в 15 секунд.
     
    Добавлено:
    до кучи
    delay_+js.cmd
    Код:
    @echo off
    chcp 1251>nul
     
    :: Установите паузу в секундах
    set delay=15
    title Установка паузы в %delay% секунд.
    echo Пауза в %delay% секунд...
    set /a delay=%delay%*1000
    echo WScript.Sleep(WScript.Arguments(0))>delay
     
    :: Команды до паузы
    set "ctime1=%time:~0,-3%"
    set /a "sec1=36000*%time:~0,1%+3600*%time:~1,1%+600*%time:~3,1%+60*%time:~4,1%+10*%time:~6,1%+%time:~7,1%"
    echo Сейчас: %ctime1%
    echo Команды до паузы...
     
    cscript //nologo //e:javascript delay %delay%
     
    :: Команды после паузы
    set "ctime2=%time:~0,-3%"
    set /a "sec2=36000*%time:~0,1%+3600*%time:~1,1%+600*%time:~3,1%+60*%time:~4,1%+10*%time:~6,1%+%time:~7,1%"
    set /a "math=%sec2%-%sec1%"
    echo Сейчас: %ctime2%. Прошло %sec2%-%sec1%=%math% секунд.
    echo Команды после паузы...
     
    del/q delay
    pause

    Теперь загрузка ЦП минимальна.

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 05:25 07-01-2008 | Исправлено: Nagual, 14:32 07-01-2008
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual ну сколько можно раз можно тут писать, что конструкции типа  
    set /a "sec2=%time:~0,2%*60+%time:~3,2%*60+%time:~6,2%"  
    - совершенно недопустимы, будь добр 6 циферок по отдельности умножать-складывать, а не группами по две.
     
    для проверки потренируйся на  
    set time=09:09:09,09
    set /a "sec2=считаешь как тебе нравится"
     
    кстати, секунд должно получаться 32949, а никак не 1081

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 10:17 07-01-2008 | Исправлено: wolf0425, 10:31 07-01-2008
    Nagual



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

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 15:06 07-01-2008
    SymA



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    как избавиться от пробела в генерируемом этим батником файле ?
    Код:
     
    set file=%systemroot%\example.bat
    echo SET  ASDF=$%%date:~-10,2%%%%date:~-7,2%%%%date:~-4,4%%%%time:~-11,2%%%%time:~-8,2%%%%time:~-5,2%%$ >%file%


    Всего записей: 56 | Зарегистр. 10-12-2007 | Отправлено: 15:59 07-01-2008
       

    Страницы: 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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 4
    evle (19-03-2008 19:44): Лимит страниц.
    Задачи на bat-файлах 5


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru