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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GORA2

    Цитата:
    запускается он как то медленно.

    16-битные .COM и будут медленно запускаться, ты же не в досе, надо полагать Под XP быстро только 32-битные EXE работают, ими и надо пользоваться. На вот еще, для коллекции
     
    test.txt

    Код:

    N NOW.COM
    E 0100 EB 15 90 78 78 3A 78 78 3A 78 78 20 78 78 2F 78
    E 0110 78 2F 78 78 0D 0A 24 1E 07 B4 2C CD 21 BF 03 01
    E 0120 8A DD E8 2D 00 8A D9 E8 28 00 8A DE E8 23 00 B4
    E 0130 2A CD 21 8A DE E8 1A 00 8A DA E8 15 00 81 E9 6C
    E 0140 07 8A D9 E8 0C 00 BA 03 01 B4 09 CD 21 B8 00 4C
    E 0150 CD 21 51 57 B7 00 BE 90 01 BF 86 01 32 C0 8B 0D
    E 0160 0A C0 2B D9 72 04 FE C0 EB F6 04 30 03 D9 88 04
    E 0170 46 83 C7 02 80 F9 01 75 E3 5F BE 93 01 FC B9 02
    E 0180 00 F2 A4 47 59 C3 10 27 E8 03 64 00 0A 00 01 00
    E 0190 30 30 30 30 30
    RCX
    0095
    W
    Q
     

     
    debug<test.txt
    149 байт файлик получится

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 15:29 22-06-2007 | Исправлено: igor_andreev, 15:34 22-06-2007
    GORA2



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    Файлик получился, а как им пользоваться то!?
    Выдал время и дату в формате не совсем мне нужном. Главное будет ли эта дата зависеть от настроек Windows!? Не подскажете?

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 15:53 22-06-2007
    Elroir



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

    Цитата:
    будет ли эта дата зависеть от настроек Windows!?

    Не будет.

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

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



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

    Цитата:
    16-битные .COM и будут медленно запускаться, ты же не в досе,  

    ну не НАСТОЛЬО же! вон sbs2.com вполне шустрит, хоть и сделан наверно так же.
     
    Добавлено:
    ой, а причины торможения пожалуй внешние - вот само перестало.
    К сожалению разбираться сейчас некогда.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 17:49 22-06-2007 | Исправлено: wolf0425, 19:13 22-06-2007
    vmix



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

    Всего записей: 162 | Зарегистр. 22-10-2002 | Отправлено: 20:07 22-06-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vmix
    Что значит "по трем временнЫм аттрибутам"?

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 20:22 22-06-2007
    vmix



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

    Всего записей: 162 | Зарегистр. 22-10-2002 | Отправлено: 20:27 22-06-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vmix
    Тебе нужно удалять по определенной дате, или, скажем, удалить все кроме 10 самых новых?

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 20:52 22-06-2007
    Smitis



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

    Цитата:
    16-битные .COM и будут медленно запускаться, ты же не в досе, надо полагать  Под XP быстро только 32-битные EXE работают, ими и надо пользоваться.

    Извини, но это полная ерунда. Компьютер, на котором медлено запускаются 16-битные программы просто не потянет винду, тем более ХР

    ----------
    Разум когда-нибудь победит

    Всего записей: 3217 | Зарегистр. 09-02-2003 | Отправлено: 21:48 22-06-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Smitis
    Не так сформулировал наверно... Медленно - это значит при старте 16-бит консольная утиль тупит какие-то десятые-сотые доли секунды, то-ли .pif ей для полного счастья рядом нужен, то-ли еще что. Не все 16-битные, некоторые только. Я такую задержку обычно вижу невооруженным глазом.

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 22:23 22-06-2007 | Исправлено: igor_andreev, 22:28 22-06-2007
    ViSiToR



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

    Цитата:
    На вот еще, для коллекции

     
    Нужно в шапку это поместить, вот привёл немного в юзабельный вид  
     


     
    Получение системного времени в одном формате (вне зависимости от настроек даты и времени системы) :

     

    Код:
    @Echo off
    CD "%Temp%"
    Set NowTempFile=Now.tmp
    Echo N NOW.COM > "%NowTempFile%"
    Echo E 0100 EB 15 90 78 78 3A 78 78 3A 78 78 20 78 78 2F 78 >> "%NowTempFile%"
    Echo E 0110 78 2F 78 78 0D 0A 24 1E 07 B4 2C CD 21 BF 03 01 >> "%NowTempFile%"
    Echo E 0120 8A DD E8 2D 00 8A D9 E8 28 00 8A DE E8 23 00 B4 >> "%NowTempFile%"
    Echo E 0130 2A CD 21 8A DE E8 1A 00 8A DA E8 15 00 81 E9 6C >> "%NowTempFile%"
    Echo E 0140 07 8A D9 E8 0C 00 BA 03 01 B4 09 CD 21 B8 00 4C >> "%NowTempFile%"
    Echo E 0150 CD 21 51 57 B7 00 BE 90 01 BF 86 01 32 C0 8B 0D >> "%NowTempFile%"
    Echo E 0160 0A C0 2B D9 72 04 FE C0 EB F6 04 30 03 D9 88 04 >> "%NowTempFile%"
    Echo E 0170 46 83 C7 02 80 F9 01 75 E3 5F BE 93 01 FC B9 02 >> "%NowTempFile%"
    Echo E 0180 00 F2 A4 47 59 C3 10 27 E8 03 64 00 0A 00 01 00 >> "%NowTempFile%"
    Echo E 0190 30 30 30 30 30 >> "%NowTempFile%"
    Echo RCX >> "%NowTempFile%"
    Echo 0095 >> "%NowTempFile%"
    Echo W >> "%NowTempFile%"
    Echo Q >> "%NowTempFile%"
    Debug < "%NowTempFile%" > Nul
    For /F "usebackq delims=" %%i In (`NOW.COM`) Do Set NowTime=%%i
    Echo %NowTime%
    Del "%Temp%\NOW.COM"
    Del "%NowTempFile%"


    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 22:43 22-06-2007 | Исправлено: ViSiToR, 22:45 22-06-2007
    mcTNT2

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Небольшой кусок кода по выводу размера файла:
     
    set FILE=c:\myfile.zip
    for %%a in (%FILE%) do set SIZE=%%~za
    echo Bytes: %SIZE%
     
    Как можно отделить в выводе тысячи пробелом для лучшей читабельности,
    т.е. вместо Bytes: 1048576 выводить Bytes: 1 048 576?

    Всего записей: 47 | Зарегистр. 23-11-2005 | Отправлено: 01:17 23-06-2007 | Исправлено: mcTNT2, 01:24 23-06-2007
    ViSiToR



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

    Цитата:
    Как можно отделить в выводе тысячи пробелом для лучшей читабельности?

    Тут скорее речь о миллионах
     
    Примерно так (нужно предусмотреть мне кажется все возможные варианты) :
     

    Код:
    Set FILE=c:\myfile.zip
     
    For %%a in (%FILE%) Do Set SIZE=%%~za
    If %SIZE% GEQ 1000000 (
        Set SIZE=%SIZE:~0,1% %SIZE:~1,3% %SIZE:~-3%
        ) Else If %SIZE% GEQ 100000 (
        Set SIZE=%SIZE:~0,3% %SIZE:~-3%
        ) Else If %SIZE% GEQ 10000 (
        Set SIZE=%SIZE:~0,2% %SIZE:~-3%
        ) Else If %SIZE% GEQ 1000 (
        Set SIZE=%SIZE:~0,1% %SIZE:~-3%
        ) Else If %SIZE% LEQ 100 (
        Set SIZE=%SIZE%)
     
    Echo Bytes: %SIZE%

     
    Добавлено:
    Вот так вроде правильнее:
     

    Код:
    Set FILE=c:\myfile.zip
     
    For %%a in (%FILE%) Do Set SIZE=%%~za
        
        If %SIZE% GEQ 1000 If %SIZE% LSS 10000 (
            Set SIZE=%SIZE:~0,1% %SIZE:~-3%
        ) Else If %SIZE% GEQ 10000 If %SIZE% LSS 100000 (
            Set SIZE=%SIZE:~0,2% %SIZE:~-3%
        ) Else If %SIZE% GEQ 100000 If %SIZE% LSS 1000000 (
            Set SIZE=%SIZE:~0,3% %SIZE:~-3%
        ) Else If %SIZE% GEQ 1000000 If %SIZE% LSS 10000000 (
            Set SIZE=%SIZE:~0,1% %SIZE:~1,3% %SIZE:~-3%
        ) Else If %SIZE% GEQ 10000000 (
            Set SIZE=%SIZE:~0,2% %SIZE:~2,3% %SIZE:~5%
        )
     
    Echo Bytes: %SIZE%

     
    Хотя мне кажется нужно подсчитать длину всего числа, поделить на 3 (или на столько сколько следует отображать единиц между пробелами), и использовать результат в качестве разделителя-позиции во всём возвращённом числе (размер файла в байтах)....

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 01:46 23-06-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    Не.. плохо работает
     
    mcTNT2
    Вот такой вариант:

    Код:
     
    set FILE=c:\myfile.zip  
    for %%a in (%FILE%) do set SIZE=%%~za
    if not "%SIZE:~-10,-9%"=="" (set SIZE=%SIZE:~-12,-9% %SIZE:~-9,-6% %SIZE:~-6,-3% %SIZE:~-3%) else (
    if not "%SIZE:~-7,-6%"=="" (set SIZE=%SIZE:~-9,-6% %SIZE:~-6,-3% %SIZE:~-3%) else (
    if not "%SIZE:~-4,-3%"=="" (set SIZE=%SIZE:~-6,-3% %SIZE:~-3%)
    ))
    echo Bytes: %SIZE%
     


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

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



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

    Цитата:
    Не.. плохо работает

    Согласен, не идеально, поэтому и написал...
     

    Цитата:
    Примерно так

       
     

    Цитата:
    Вот такой вариант:

    Да, это оно, работает как часики... правда вот с таким числом этот пример не справляется - 1000000000000, на выходе имеем 000 000 000 000  
     


    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 02:39 23-06-2007
    Elroir



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

    Цитата:
    вот с таким числом этот пример не справляется  

    Я предположил, что файлов размером в терабайт у него не будет  

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 02:43 23-06-2007
    ViSiToR



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

    Цитата:
    Я предположил, что файлов размером в терабайт у него не будет

    Терабайт - не, вот число (в байтах) которое является 999 гигабайтов - 1072668082176 (999 * 1024 * 1024 * 1024), с твоим примером, получается это:
     

    Код:
    Bytes: 072 668 082 176

     

     
    Добавлено:
    Подсчитал точно, на 932 гигабайта уже неправильно возвращается, на 931 правильно

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 03:47 23-06-2007 | Исправлено: ViSiToR, 03:53 23-06-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    Прав - крыть нечем
    Будем исправляться:

    Код:
     
    set FILE=c:\myfile.zip  
    for %%a in (%FILE%) do set SIZE=%%~za
    if not "%SIZE:~-13,-12%"=="" (set SIZE=%SIZE:~-15,-12% %SIZE:~-12,-9% %SIZE:~-9,-6% %SIZE:~-6,-3% %SIZE:~-3%) else (
    if not "%SIZE:~-10,-9%"=="" (set SIZE=%SIZE:~-12,-9% %SIZE:~-9,-6% %SIZE:~-6,-3% %SIZE:~-3%) else (
    if not "%SIZE:~-7,-6%"=="" (set SIZE=%SIZE:~-9,-6% %SIZE:~-6,-3% %SIZE:~-3%) else (
    if not "%SIZE:~-4,-3%"=="" (set SIZE=%SIZE:~-6,-3% %SIZE:~-3%)
    )))
    echo Bytes: %SIZE%
     



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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 03:58 23-06-2007 | Исправлено: Elroir, 03:59 23-06-2007
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Elroir
    О! отлично!
     
    Занёс в шапку, правда весь пример может стоило бы привести в косметическо-понятный вид?  
    А также сделать возможность заранее подставлять разделитель для чисел.
     
    Вот примерно так:
     

    Код:
    @Echo Off
    Set FILE=%WinDir%\Notepad.exe
    Set "DELIM=,"
     
    For %%i In ("%FILE%") Do Set SIZE=%%~zi
     
    If Not "%SIZE:~-13,-12%"=="" (
        Set SIZE=%SIZE:~-15,-12%%DELIM%%SIZE:~-12,-9%%DELIM%%SIZE:~-9,-6%%DELIM%%SIZE:~-6,-3%%DELIM%%SIZE:~-3%
    ) Else If Not "%SIZE:~-10,-9%"=="" (
        Set SIZE=%SIZE:~-12,-9%%DELIM%%SIZE:~-9,-6%%DELIM%%SIZE:~-6,-3%%DELIM%%SIZE:~-3%
    ) Else If Not "%SIZE:~-7,-6%"=="" (
        Set SIZE=%SIZE:~-9,-6%%DELIM%%SIZE:~-6,-3%%DELIM%%SIZE:~-3%
    ) Else If Not "%SIZE:~-4,-3%"=="" (
        Set SIZE=%SIZE:~-6,-3%%DELIM%%SIZE:~-3%
    )
     
    Color A
    Echo Size of File [%FILE%] in Bytes is: %SIZE%
    Pause > Nul


    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 04:28 23-06-2007
    Maza Faka



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

    Цитата:
     вместо Bytes: 1048576 выводить Bytes: 1 048 576?

    Можно так:

    Код:
     
    @echo off
     set FILE=c:\myfile.zip
      for /f "tokens=3" %%a in ('dir %FILE% ^| find /i "myfile.zip"') do set size=%%a
       echo Bytes: %size%
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:33 23-06-2007 | Исправлено: Maza Faka, 08:34 23-06-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