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

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

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

vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Nagual



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

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

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

  • Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:28 19-03-2008 | Исправлено: Nagual, 01:02 24-09-2008
    dimpase

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

     
    Добавлено:
    king_stiven
    благодарен

    Всего записей: 130 | Зарегистр. 29-09-2008 | Отправлено: 10:44 09-10-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Shadowland
    что конкретно неясно?
     
    папка %temp% неясна?
    выполни echo %temp% или set t
    папка %p% является временной для выполнения данной задачи
    на первом этапе определяется свободное место на системном томе (в байтах)
    думаю, что это лучше, нежели, как поставлено в задаче, определять размер папки
    если не устраивает, меняй участок кода
    далее устанавливаем наше огранчение 400 Мб и переводим его в байты (соразмерную величину), умножая на 1024 (умножал специально для пояснения, хотя можно было просто задать константу)
    далее сравниваем оставшееся место на системном томе с нашим значением ограничения
    при этом, если свободное место на системном разделе меньше заданного нами, выполняем его очистку, делаем паузу в час и переходим к текущей проверке, в обратном случае просто делаем паузу и переходим к проверке свободного места на системном томе
     
    ессно, задание ограничения можно вынести на вторую строку
    если код не работает как надо, пиши, попробуем исправить

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 11:57 09-10-2008 | Исправлено: Nagual, 12:02 09-10-2008
    dimpase

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

    Код:
    @echo off
    setlocal  
     
    ::Маркер для использование goto
    :vvod
    ::Очищаем Экрвн
    CLS
    ::Шаблон ВВода
    echo "‚ўҐ¤ЁвҐ зҐаҐ§ § Їпвго : €¬п,” ¬Ё«Ёп, ЋвзҐбвў®, „ЁаҐЄжЁп, ’Ґ«.ђ Ў., ’Ґ«.ў-гва., ’Ґ«.¬®Ў., ѓ®а®¤"
    ::Приглашение для ввода данных
    set /p "input=  ‚ў®¤ : "
    ::Объявление использования лат.букв для записи в файл
    chcp 1251
    ::Присвоение ввода пользователя переменной input
    set a_in=%input%
    ::Запись данных введ.пользователем в txt файл
    echo  %a_in%>>FIO.txt
    ::Приглашение для создания еще одной записи
    set /p "input1=ᮧ¤ вм ҐйҐ ЇҐаҐ¬Ґ--го?[Y]N:"
    ::Если введено y то переходим к маркеру vvod
    if /i "%input1%"=="y" goto vvod
    ::Присвоение
    for /f "tokens=1,2,3,4,5,6,7,8 delims=," %%i in (FIO.txt) do (  
        set I_name=%%i
        set F_name=%%j
        set O_name=%%k
        set Dir_name=%%l
        set Phone_work=%%m
        set Phone_in=%%n
        set Phone_mob=%%o
        set City_name=%%p
        call:write  
    )  
    goto:eof  
    ::Запись в html из txt
    :write  
    set /a see+=1
    echo  ^<TR^>^<TD^> %I_name%^</TD^>^<TD^> %F_name%^</TD^>^<TD^>%O_name%^</TD^>^<TD^>%Dir_name%^</TD^>^<TD^>%Phone_work%^</TD^>^<TD^>%Phone_in%^</TD^>^<TD^>%Phone_mob%^</TD^>^<TD^>%City_name%^</TD^>^</TR^>  >>html.html
     
    pause
     

     
    Добавлено:
    бррррр...торможу,спасибо ничего ненадо
     
    Добавлено:
    Нет мой вопрос не отменяется
    Извените меня.

    Цитата:
    Еще вопросик можно?  
    Почему когда у меня программа возвращается к маркеру буквы меняются обратно на досовские,я понял почему,как это исправить??  
    Код:

     
     
     
    Добавлено:
    Решил вопрос!Ненадо все-таки
    ====================

    Всего записей: 130 | Зарегистр. 29-09-2008 | Отправлено: 12:13 09-10-2008
    avkorets



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалста
    есть такая строка if "!x:~0,7!"=="4081781" сравниваем значение..
    а как сделать так чтобы можо было сравнить колво символов в переменной с другим значением?
    например так if "!x!"=="7" т.е. условие работает если в переменной 7 символов...?

    Всего записей: 81 | Зарегистр. 09-09-2008 | Отправлено: 18:43 09-10-2008
    Shadowland

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    2Nagual
    это для кэша Оперы тобиш конкретно папки cache4
    непонятно куда вспихивать название этой самой обрабатываемой папки...
    место на системном томе всёж юзается не только этой папкой - поэтому определять всёже надо бы размер именно этой папки...
    и в идеале конечно неплохо бы оставлять там ещё и 1 или 5 самых новых файлов с размером больше 1 Мб (так сказать "last played") в дополнение к тем что меньше 1 Мб....

    Всего записей: 459 | Зарегистр. 14-11-2005 | Отправлено: 20:25 09-10-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Shadowland
    убил наповал
    opera:config#cache
    opera:config#disk%20cache

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 21:27 09-10-2008
    Shadowland

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    2Nagual
    если бы оно работало так как должно я бы не стал заморачиваться...
    я вычищал из этой папки и не один раз и 700 Мб и три с лишним гига при настройке в 200 Мб...

    Всего записей: 459 | Зарегистр. 14-11-2005 | Отправлено: 23:56 09-10-2008
    01MDM



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

    Цитата:
    например так if "!x!"=="7" т.е. условие работает если в переменной 7 символов...?

     
    Сначала надо получить "длину" переменной

    Код:
     
    @echo off
    set x=1234567
    setlocal enabledelayedexpansion
    :1
    set /a cnt+=1
    if not "!x:~%cnt%,1!"=="" goto:1
    if %cnt%==7 (echo %%x%%.length equ 7) else (echo %%x%%.length not equ 7)  
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 04:49 10-10-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Shadowland
    оффтоп и изврат
    смотри тут
    cache
    disk cache
    в идеале регься и спрашивай у оперных аборигенов

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 11:57 10-10-2008
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Не встречал ли кто-нибудь аналогов diskpart ? Задача простая - есть винт, который надо переразбить. Проблема в том, что diskpart не слишком удобен, из него сложно вытаскивать информацию о разделах.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 12:29 10-10-2008
    dimpase

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Скажите как сделать чтоюы в батнике буквы и знаки не путались,например мне надо вытащить инфу под строкой
    12,она находится первая сверху,есть еще строка 125,онанаходится последняя,дак вот .Мне надо вытащить то что под строкой 12 а он мне дергает то что под 125.Тоесть как я понял он принимает во внимание только первую букву??как это обойти?

    Всего записей: 130 | Зарегистр. 29-09-2008 | Отправлено: 12:53 10-10-2008
    VitRom

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ, навскидку (всех особенностей каждой не помню):
    1) с Ghost идёт gdisk (и gdisk32)
    2) в дистре FreeDOS есть fdisk и pfdsik
    3) в дистрах xBSD есть каталог tools кажется
    4) ещё вспоминается fips

    Всего записей: 3098 | Зарегистр. 18-06-2006 | Отправлено: 14:42 10-10-2008
    Shadowland

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    2Nagual
    может всёже ответите на вопрос заданный дважды - а именно - куда вспихивать название этой самой обрабатываемой папки ?? (теперь - трижды...)
     
    изврат или нет - у меня есть и другие кэши... - доделайте пожалуйста скрипт...
     
    заранее спасибо

    Всего записей: 459 | Зарегистр. 14-11-2005 | Отправлено: 14:58 10-10-2008
    dimpase

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    !!!МУЖИКИ!!!          СПАСАЙТЕ!!!

    Цитата:
    Скажите как сделать чтоюы в батнике буквы и знаки не путались,например мне надо вытащить инфу под строкой  
    12,она находится первая сверху,есть еще строка 125,онанаходится последняя,дак вот .Мне надо вытащить то что под строкой 12 а он мне дергает то что под 125.Тоесть как я понял он принимает во внимание только первую букву??как это обойти?


    Всего записей: 130 | Зарегистр. 29-09-2008 | Отправлено: 15:21 10-10-2008
    avkorets



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

    Цитата:
    01MDM

    спасибо за подсказку, а как этот счетчик впихнуть сюда??чот не получается...

    Цитата:
    @echo off  
    setlocal enabledelayedexpansion
    for %%i in (*.txt) do (
    set /p firstline=<%%i
    echo !firstline!>> 1.tmp
    for /f "skip=1 tokens=1-8 delims=;" %%a in (%%i) do (set x=%%d
    if not "!x!"=="40817810200055100054" (
        echo %%a;%%b;%%c;%%d;;;;%%f;;%%e;%%g;%%h>> 1.tmp
        ) else (
        echo %%a;%%b;%%c;;%%d;;;%%f;;%%e;%%g;%%h>> 1.tmp
    )
    )
    move /y 1.tmp %%i
    )

    как видно у меня здесь идет просто сравнение значения переменной %%d.
    Было бы точнее сравнить именно количесвто символов т.е. если в пременной %%d 20 символов (в данном случае)  то условие "!x!"=="20" выполняется....

    Всего записей: 81 | Зарегистр. 09-09-2008 | Отправлено: 16:15 10-10-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Shadowland
    ессно вместо %temp% ставь свой каталог ...\cach4
    сейчас пока нет времени, как будет, допишу

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 16:31 10-10-2008
    dimpase

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята спасибо вам огромное за вашу помощь!!!
    САМ додумал.
    чужая голова хорошо а своя лучше!!!

    Всего записей: 130 | Зарегистр. 29-09-2008 | Отправлено: 16:33 10-10-2008
    ilicho42



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Доброго времени суток!  
    Решил облегчить себе жизнь, но как то получилось не очень...  
    В сети есть несколько проксиков и нужно перевести пользователей qip с одного проксика на другой. Хранит qip конфиг в текстовом файле и  для перевода qip на другой прокси-сервер нужно всего лишь заменить там несколько строк.  
    Вот что я написал для этого:  
     
    1.bat (поиск файлов config.ini на диске С):  
     
    @echo off  
    dir C:\ /s /b | find "config.ini">list001451.txt  
    call 2.bat  
     
    2.bat (привожу пути к файлу в вид, понятный команде cd):  
     
    @echo off  
    for /f "tokens=*" %%b in ('more^<list001451.txt') do call :_replace1 %%b  
    del list001451.txt  
    rename new.txt list001451.txt  
    call 3.bat  
    goto eof  
    :_replace1  
    set i=%*  
    echo %i%  
    set i=%i:Config.ini=%  
    echo %i%>>new.txt  
    :eof  
     
    3.bat (ну и тут собственно открытие файлов config.ini, поиск и замена нужных строк):  
     
    for /f "tokens=*" %%f in ('more^<list001451.txt') do cd %%f&call :_replace0  
    :_replace0  
    for /f "tokens=*" %%a in ('more^<config.ini') do call :_replace %%a  
    del config.ini  
    rename new.ini config.ini  
    goto eof  
    :_replace  
    set i=%*  
    echo %i%  
    set i=%i:Port=5190=Port=443%  
    set i=%i:ProxyType=NONE=ProxyType=HTTP(S)%  
    set i=%i:ProxyHost==ProxyHost=192.168.130.8%  
    set i=%i:ProxyHost=192.168.130.18=ProxyHost=192.168.130.8%  
    set i=%i:ProxyPort==ProxyPort=3128%  
    set i=%i:ProxyAyth=No=ProxyAuth=Yes%  
    echo %i%>>new.ini  
    :eof  
     
    Может это не совсем красиво, но как смог...  
    Как видно изменение строк сторок идёт в 3м батнике и нужно (например) изменить строку Port=5190 на Port=443. Так вот вопрос: как заэкранировать знак = ? Пробывал делать так: Port^=5190=Port^=443, но при такой компоновке он не воспринимает строку Port=5190 и соответственно не заменяет её.  
    Блин, такую работу проделал и на такой ерунде запоролся  
    Заранее спасибо за помощь!  

    Всего записей: 12 | Зарегистр. 10-07-2008 | Отправлено: 16:44 10-10-2008
    NIKZZZZ



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

    Цитата:
    с Ghost идёт gdisk (и gdisk32)

    Скачал полную версию, была обрезанная (без gdisk32).
    Посмотрел, вроде есть все, что надо, главное не сложно вытащить инфу о диске.

    Цитата:
    ещё вспоминается fips

    ??? не нашел.
     
     
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 17:12 10-10-2008
    VitRom

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    почти всё в куче здесь и "дедушка" здесь
     
    ЗЫ. а сам гдиск от гдиск32 (и наоборот) не зависит, просто смотря откуда (из Вин или ДОС) работать будешь

    Всего записей: 3098 | Зарегистр. 18-06-2006 | Отправлено: 18:37 10-10-2008 | Исправлено: VitRom, 18:45 10-10-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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 5
    vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru