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

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

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

vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

vu1tur



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

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
 
Для перекодирования кирилицы 866<<>>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 12:40 25-01-2010 | Исправлено: bomzzz, 13:37 20-08-2010
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    Но ведь 1073741824 (1Гб) не входит в это ограничение.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:41 03-09-2010
    wolf0425



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

    Цитата:
    Но ведь 1073741824 (1Гб) не входит в это ограничение.  
    зато %FreeSpace% может входить

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 19:48 03-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    с числами чета никога ниче не делал кроме счетчика, а вообщенадо конвертировать строку в число?  
     
    Добавлено:
    ещё фсутил, дает три значения как и апи функция, последнее значение очевидно и есть
    freespaceavaliabletocaller
    свободное место не вообще а доступное вызывающему процессу, не знаю в каких случаях это может сказаться

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 19:51 03-09-2010
    01MDM



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

    Цитата:
    зато %FreeSpace% может входить  

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

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:06 03-09-2010 | Исправлено: 01MDM, 20:09 03-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    почему, если возникнет ошибка то она будет равна нулю
     
    Добавлено:
    вернее она будет равна строковому значению

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 20:10 03-09-2010
    01MDM



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

    Цитата:
    почему, если возникнет ошибка то она будет равна нулю
     
    Добавлено:
    вернее она будет равна строковому значению

    Извини, не понял мысль.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:16 03-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ну я то делал что у меня строка конфертирующая
    set /a string=%string%
    сначала потомуша не знал надо ли отдельно конфертировать перед ифом,
    а потом когда апшипку увидел - заоодно обрезал три знака в конце
    а у тебя даже не знаю как будет но она будет равна строковому значению размера
     
    Добавлено:
    set /a STRING=%STRING%
    echo %STRING%
    if %STRING% LSS 9024000 echo OK
     
    значение из за ошибки переменной не меняется, иф не выполняется
     
    Добавлено:
    ошибка при срвнении не выдается, но и условие не выполняется, как она сравнивает - хз

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 20:19 03-09-2010
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    Если числа сравнивать как строки, то наверное лучше эти "строки" привести к общему знаменателю:

    Код:
     
    @echo off
    setlocal
     
    set var1=1234567891234567891
    set var2=1234567891234567890
     
    set "var1=0000000000%var1%"
    set "var2=0000000000%var2%"
     
    if %var1:~-20% gtr %var2:~-20% (echo GTR) else (echo LSS)
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:02 03-09-2010
    wolf0425



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

    Цитата:
    ошибка при срвнении не выдается, но и условие не выполняется, как она сравнивает - хз
    игнорирует строку с ошибкой.
     

    Цитата:
    Может конечно, но оно не будет ни равно ни меньше 1073741824
    оно может быть например в 10 раз больше, в if получим ошибку.
     
    в общем со свободным размером нужно что-то делать, обреза сколько-то знаков справа - вполне вариант, надо только вариант околонулевого свободного места предусмотреть.
     

    Цитата:
    свободное место не вообще а доступное вызывающему процессу, не знаю в каких случаях это может сказаться
    в случае если пользователь, запустивший процесс, попадает под ограничение установленных квот.
     
     

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 21:06 03-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    ну ты выдумал, спс за очередной урок.

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 21:07 03-09-2010 | Исправлено: bomzzz, 21:08 03-09-2010
    wolf0425



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

    Цитата:
    Если числа сравнивать как строки, то
    то нужно после добавления нулей слева ещё и обрезать строку отсчитывая справа, чтоб 2 было меньше 10
     
    и главное - ты кавычки в if забыл для строкового сравнения.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 21:08 03-09-2010 | Исправлено: wolf0425, 21:15 03-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    какой ты хитрый надо запомнить
     
    Добавлено:
    на асме интересно можно этой идеей пользоваться, операции с сопроцессором считаются медленными
     
    Добавлено:
    нулей только наверно должно быть тоже 20, или 19. вообще у кампутира маскимально возможный размер
     
    7FFFFFFFFFFFFFFF
     
    9223372036854775807
    9 223 372 036 854 775 807

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 21:09 03-09-2010 | Исправлено: bomzzz, 21:14 03-09-2010
    01MDM



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

    Цитата:
    оно может быть например в 10 раз больше, в if получим ошибку.

    Да хоть в сто, главное чтоб сравнитель укладывался в рамки 32-понимания:

    Код:
     
    if 107374182400 leq 1073741824 (echo LEQ) else (echo GTR)
     


    Цитата:
    то нужно после добавления нулей слева ещё и обрезать строку отсчитывая справа, чтоб 2 было меньше 10

    Ну так я и обрезал все кроме 20 знаков с конца.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:18 03-09-2010 | Исправлено: 01MDM, 21:23 03-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    все работает я проверил сразу, не сразу понил как
     
    Добавлено:
    и в апи фукции очень мутно этот момент освещен со старшим словом может это и неправда насчет 7FFFFFFFFFFFFFFF , но точно не меньше
     
    Добавлено:
    даже если за следующие 20 лет будет такой же рывок: от мб до терабайта, все равно не сможем через 20 лет проверить

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 21:36 03-09-2010 | Исправлено: bomzzz, 21:48 03-09-2010
    king_stiven

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

    Цитата:
    и в случае если места менее 1ГБ выполнялось действие.  

    как раз под утиль FREEDISK
        This tool checks whether the specified amount of free space is
        available on the specified drive or not. Returns "0" if space is
        available and "1" if not available.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 22:17 03-09-2010
    Mark_Titov



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

    Код:
    @ECHO OFF
    С:\LOG 2>nul
    del *.txt /s /f 2>nul
    ECHO.Удаление успешно завершено...
    pause 1>nul

    нужно сделать что бы он удалял txt файлы содержащие в названии формат даты, типа 04.09.2010
    Как это сделать...?
    Благодарю...

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 07:21 04-09-2010 | Исправлено: Mark_Titov, 09:18 04-09-2010
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите, как удалить из папки все файлы с расширением .cmd, в именах которых присутствуют цифры?

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 08:52 04-09-2010
    01MDM



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

    Код:
     
    del 00*.txt
     

     
    Free_Soft

    Код:
     
    @echo off
    pushd "Folder" && (
    for /f "tokens=*" %%i in ('dir /b *.cmd ^| findstr [0-9]') do del "%%i"
    )
    popd
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 09:19 04-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Free_Soft
    http://forum.ru-board.com/topic.cgi?forum=62&topic=19668&start=3860#20

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 09:27 04-09-2010
    Free_Soft



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

    Добавлено:
    bomzzz
    Пасиб

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 09:33 04-09-2010 | Исправлено: Free_Soft, 10:08 04-09-2010
       

    Страницы: 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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8
    vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru