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

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



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

    Цитата:
    А какая скорость нужна , если всё таки использовать skip?

    Так проблема не в Skip , вопрос в том можно ли хотя-бы в теории одновременно читать оба файла батником?

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 00:35 24-11-2007
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    В данной постановке задачи штатными средствами вряд ли.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 01:19 24-11-2007
    xKLx

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

    Код:
    @echo off
    echo Viberite server
     
    set serv=b
    set /p serv=(1) Da6avitb (2)  3amenitb ??  
    if "%serv%"==1 ?????
    if "%serv%"==2 ?????
     
    set server=a
    set /p server=(1) ----- (2) ------ {3} ------ {4} ----- (0) quit?  
    if /i %server%==1 goto 1
    if /i %server%==2 goto 2
    if /i %server%==3 goto 3
    if /i %server%==4 goto 4
    if /i %server%==0 goto end
     
    :1
    echo 1127.0.0.1 localhost> C:\hosts
    echo 189.207.221.204 l2testauthd.lineage2.com>> C:\hosts
    echo 189.207.221.204 l2authd.lineage2.com>> C:\hosts
    echo 189.207.221.204 nprotect.lineage2.com>> C:\hosts
    pause
    exit
     
    pause
    exit
     
    :2
    echo 2127.0.0.1 localhost> C:\hosts
    echo 289.207.221.204 l2testauthd.lineage2.com>> C:\hosts
    echo 289.207.221.204 l2authd.lineage2.com>> C:\hosts
    echo 289.207.221.204 nprotect.lineage2.com>> C:\hosts
    pause
    exit
     
    :3
    echo 3127.0.0.1 localhost> C:\hosts
    echo 389.207.221.204 l2testauthd.lineage2.com>> C:\hosts
    echo 389.207.221.204 l2authd.lineage2.com>> C:\hosts
    echo 389.207.221.204 nprotect.lineage2.com>> C:\hosts
    pause
    exit
     
    :4
    echo 127.0.0.1 vip.tt2xz.com> C:\hosts
    echo 127.0.0.1 vip1.tt2xz.com>> C:\hosts
    echo 127.0.0.1 vip2.tt2xz.com>> C:\hosts
    echo 127.0.0.1 vip3.tt2xz.com>> C:\hosts
    echo 127.0.0.1 vip4.tt2xz.com>> C:\hosts
    echo 127.0.0.1 vip5.tt2xz.com>> C:\hosts
    echo 127.0.0.1 vip6.tt2xz.com>> C:\hosts
    echo 127.0.0.1 vip7.tt2xz.com>> C:\hosts
    echo 127.0.0.1 VIP1.TOWALKER.COM>> C:\hosts
    echo 127.0.0.1 VIP2.TOWALKER.COM>> C:\hosts
    echo 127.0.0.1 VIP3.TOWALKER.COM>> C:\hosts
     
    pause
    exit

     
    суть батника дававлять или заменять некоторые записи в хосте
    вот только незнаю что надо писать где стоят "?????"
    помогите плз поправьте если что не так

    Всего записей: 5 | Зарегистр. 25-11-2007 | Отправлено: 04:27 25-11-2007
    01MDM



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

    Цитата:
    суть батника дававлять или заменять некоторые записи в хосте

    По-моему ты везде заменяешь.

    Цитата:
    вот только незнаю что надо писать где стоят "?????"

    Если ты имел ввиду выбор действия то:

    Код:
     
    @echo off
    setlocal
    set /p serv="1 - add, 2 - replace: "
    if ~%serv%==~ (echo empty choice && goto:eof)
    if %serv%==1 (goto:add)
    if %serv%==2 (goto:replace)
    echo wrong choice && goto:eof
     
    :add
    :: Здесь дописываешь в файл
    echo add
    goto:eof
     
    :replace
    :: Здесь перезаписываешь файл
    echo replace
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:49 25-11-2007
    xKLx

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

    Код:
    :1
    echo 1127.0.0.1 localhost> C:\hosts
    echo 189.207.221.204 l2testauthd.lineage2.com>> C:\hosts
    echo 189.207.221.204 l2authd.lineage2.com>> C:\hosts
    echo 189.207.221.204 nprotect.lineage2.com>> C:\hosts
    pause
    exit
     
    :2
    echo 2127.0.0.1 localhost>> C:\hosts
    echo 289.207.221.204 l2testauthd.lineage2.com>> C:\hosts
    echo 289.207.221.204 l2authd.lineage2.com>> C:\hosts
    echo 289.207.221.204 nprotect.lineage2.com>> C:\hosts
    pause
    exit

     
    в первом случае делается замена (тоесть всё что есть в хосте заменяется на наши данные)
    во втором случае просто наши данные добавляются в хост не стерая предыдущие данные
     

    Всего записей: 5 | Зарегистр. 25-11-2007 | Отправлено: 14:57 25-11-2007
    AmunRa

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

    Всего записей: 106 | Зарегистр. 30-09-2005 | Отправлено: 09:59 26-11-2007
    KapralBel



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

    Код:
    RAR m r -to10d c:\Delete.rar C:\Folder
    del c:\Delete.rar /q


    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 11:13 26-11-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AmunRa
    test.cmd
    Код:
    @echo off
    for /f "delims=" %%a in ('forfiles/s /d -10') do del/q/f/s %%a

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 11:30 26-11-2007 | Исправлено: Nagual, 11:36 26-11-2007
    AmunRa

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

    Всего записей: 106 | Зарегистр. 30-09-2005 | Отправлено: 12:10 26-11-2007
    xKLx

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

    Всего записей: 5 | Зарегистр. 25-11-2007 | Отправлено: 20:55 26-11-2007
    Elroir



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

    Код:
     
    @echo off  
    echo Viberite server  
     
    set /p serv=(1) Da6avitb (2)  3amenitb ??    
    if "%serv%"=="1" set "action=>>"  
    if "%serv%"=="2" set "action=>"
     
    set /p server=(1) ----- (2) ------ {3} ------ {4} ----- (0) quit?  
    if /i %server%==1 goto 1  
    if /i %server%==2 goto 2  
    if /i %server%==3 goto 3  
    if /i %server%==4 goto 4  
    if /i %server%==0 goto end  
     
    :1  
    echo 1127.0.0.1 localhost %action% C:\hosts  
    echo 189.207.221.204 l2testauthd.lineage2.com>> C:\hosts  
    echo 189.207.221.204 l2authd.lineage2.com>> C:\hosts  
    echo 189.207.221.204 nprotect.lineage2.com>> C:\hosts  
    pause  
    exit  
     
    pause  
    exit  
     
    :2  
    echo 2127.0.0.1 localhost %action% C:\hosts  
    echo 289.207.221.204 l2testauthd.lineage2.com>> C:\hosts  
    echo 289.207.221.204 l2authd.lineage2.com>> C:\hosts  
    echo 289.207.221.204 nprotect.lineage2.com>> C:\hosts  
    pause  
    exit  
     
    :3  
    echo 3127.0.0.1 localhost %action% C:\hosts  
    echo 389.207.221.204 l2testauthd.lineage2.com>> C:\hosts  
    echo 389.207.221.204 l2authd.lineage2.com>> C:\hosts  
    echo 389.207.221.204 nprotect.lineage2.com>> C:\hosts  
    pause  
    exit  
     
    :4  
    echo 127.0.0.1 vip.tt2xz.com %action% C:\hosts  
    echo 127.0.0.1 vip1.tt2xz.com>> C:\hosts  
    echo 127.0.0.1 vip2.tt2xz.com>> C:\hosts  
    echo 127.0.0.1 vip3.tt2xz.com>> C:\hosts  
    echo 127.0.0.1 vip4.tt2xz.com>> C:\hosts  
    echo 127.0.0.1 vip5.tt2xz.com>> C:\hosts  
    echo 127.0.0.1 vip6.tt2xz.com>> C:\hosts  
    echo 127.0.0.1 vip7.tt2xz.com>> C:\hosts  
    echo 127.0.0.1 VIP1.TOWALKER.COM>> C:\hosts  
    echo 127.0.0.1 VIP2.TOWALKER.COM>> C:\hosts  
    echo 127.0.0.1 VIP3.TOWALKER.COM>> C:\hosts  
     
    pause  
    exit
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 21:05 26-11-2007
    xKLx

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    как раз то что надо спс
     
    прикольно ещё будет если будут надписи по русски вот только непомню как это сделать давненько это было

    Всего записей: 5 | Зарегистр. 25-11-2007 | Отправлено: 21:23 26-11-2007 | Исправлено: xKLx, 21:26 26-11-2007
    01MDM



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

    Цитата:
     
    прикольно ещё будет если будут надписи по русски вот только непомню как это сделать давненько это было
     

    Просто сохраняй в dos-кодировке (cp866) или  

    Код:
     
    @echo off
    chcp 1251 >nul
     
    .....
    .....
     
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 23:29 26-11-2007
    xKLx

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Всё разобрался оказывается у меня шрифт в консоле стоял точечный а в нем нету русского

    Всего записей: 5 | Зарегистр. 25-11-2007 | Отправлено: 00:42 27-11-2007
    abasov



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Помогите пожалуйста. Не переходит на следущий том, зацикливается на первом, если убрать -severy:3 - работает, но нужен таймаут.  

    Код:
     
    rar a -y -v500k -m5 -r -rr -s -df c:\test\example c:\test\*.mp3  
    sleep 2
    for %%x in ("c:\test\*.*") do postie -severy:3 -host:first -v -to:nekto@gmail.com -from:from@test.ru -s:"%%x" -nomsg -a:"%%x"
     
     
     

     

    Всего записей: 345 | Зарегистр. 12-11-2002 | Отправлено: 09:57 27-11-2007
    SapSat

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, плз, как реализовать батник для перевода градусов цельсия в фаренгейты и обратно.
    Надо:
     - после запуска батника - выскакивал запрос :: введите температуру :
     - ввод должен быть типа 22C или 77F
     - по последней введенной букве определялось - в какую сторону конвертить
     - на выходе сообщение типа: 77F = 25.00C  
     - чтобы выводились cотые доли градуса
     
    Я пока застрял на:
     
    @echo off
    setlocal ENABLEEXTENSIONS
    set /p DFar=Enter Fahrenheit's Degree :  
    set /a DCel=(%DFar%-32)*500/9
    Echo %DFar% F = %DCel:~0,2%.%DCel:~2,3% C
     
    но этот код правильно работает только для F > 50  
     
    :-(
     
     
    Добавлено:
     
    в продолжение конвертера температур F <==> C
     
    Как делать кроп (вырезку) не слева, а справа (с конца ввода) -то есть, если я запущу:
     
    set /p td=Enter Temperature :  
    echo %td:~0,1%
     
    и введу 55F
     
    то чтобы вывод был не 5, а F  
     
    то есть количество введенных знаков не известно (2,3,4)???
     

    Всего записей: 32 | Зарегистр. 27-11-2007 | Отправлено: 13:12 27-11-2007 | Исправлено: SapSat, 13:41 27-11-2007
    William Gates

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka
    Robocopy не совсем подходит. Устанавливать дополнительный софт для решения такой задачи не совсем целесообразно. Может все-таки можно сделать это с помощью bat-файла, изящно и кратко. Краткость - СТ.

    Всего записей: 22 | Зарегистр. 12-10-2007 | Отправлено: 13:57 27-11-2007
    SapSat

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    в продолжение темы конвертера температур F <==> C  
     
    ну хорошо, если никто не знает, как делать crop начиная справа (с конца введенной строки), то может кто-нибудь знает, как определить длину введенной строки?
     
    ?

    Всего записей: 32 | Зарегистр. 27-11-2007 | Отправлено: 14:21 27-11-2007
    Tipulatoid



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

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 14:37 27-11-2007
    SapSat

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Формула для перевода температур - была зашита в первом примере:
    Сel=(Far-32)*5/9
    .
    Сейчас последняя у меня версия имеет вид:
     
    @echo off
    setlocal ENABLEEXTENSIONS
     
    set /p td=Enter Temperature :  
    if %td:~-1%==F goto :FAR  
    if %td:~-1%==C goto :CEL  
    goto :EOF  
     
    :FAR
    set /a DFar=%td:~-3,2%    
    set /a DCel=(%DFar%-32)*500/9
    Echo %DFar% F = %DCel:~0,2%.%DCel:~2,3% C
    goto :EOF  
     
    :CEL
    echo CEL
    goto :EOF  
     
    Пока упираюсь в вопрос - как определить длину строки (переменной)?
     
    ?

    Всего записей: 32 | Зарегистр. 27-11-2007 | Отправлено: 14:43 27-11-2007 | Исправлено: SapSat, 14:44 27-11-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 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