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

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



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka
    да more вполне хватило, спс, кто бы мог подумать...

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 17:18 11-07-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как можно определить букву\буквы CD\DVD-привода и его\их готовность (вставлен диск или нет) в HOME Edition. В Pro легко определялось через wmic.
    Какие есть еще способы?

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:52 11-07-2007
    wolf0425



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

    Цитата:
    Вот чтоб такими вычислениями не заниматься
    я для себя нарыл отличный адрес для wget:
    http://www.netikus.net/show_ip.html
    обычный текст, ни тегов html, ничего, кроме ip-шника  
    а может ты и что-то придумаешь, чтоб ip выкидывать сразу в консоль/переменную, а не в файл?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 22:55 11-07-2007
    0Vovan0



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    можно ли из батника прописать папку в path? Желательно так чтобы следующая запущенная программа уже могла обращаться к файлам в этой папке также как и к файлам в windows\system32 (т.е. без пути, только по имени файла)

    Всего записей: 2370 | Зарегистр. 15-07-2005 | Отправлено: 23:38 11-07-2007
    ViSiToR



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

    Цитата:
    можно ли из батника прописать папку в path?

    См. в шапке я приводил пример - Работа с переменными и параметрами ком. строки -> Создание (запись) переменных окружения в реестр.

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 00:15 12-07-2007
    NIKZZZZ



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

    Цитата:
    что-то придумаешь, чтоб ip выкидывать сразу в консоль/переменную, а не в файл?


    Код:
    for /f "skip=6 delims=" %%i in ('wget -s -O - http://www.netikus.net/show_ip.html') do set "ip=%%i"
    echo IP= %ip%


    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 00:27 12-07-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Какая версия wget-a используется? У меня он пишет, что не знает опции -s.
     
    Добавлено:
    Кстати - я пользуюсь curl-ом. В данном случае с ним проще:
    "curl http://www.netikus.net/show_ip.html", выдает IP в консоль.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:31 12-07-2007
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    01MDM
    В Home Edition есть утилита DISKPART.EXE? Если есть, то можно так:

    Код:
     
    @echo off
    for /f "tokens=3" %%a in ('echo list volume ^| diskpart ^| find "ROM"') do (
    echo Found CD\DVD Drive %%a:
    dir %%a:>nul && Echo Drive %%a: READY
    Echo.
    )
     

     
    Добавлено:
    0Vovan0

    Цитата:
    можно ли из батника прописать папку в path?

    На диске с дистрибутивом WinXP Pro есть утилита "SETX.EXE"

    Код:
     
    @echo off
    setx PATH=%PATH%;C:\Program -m
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:26 12-07-2007 | Исправлено: Maza Faka, 08:44 12-07-2007
    NIKZZZZ



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

    Цитата:
    Какая версия wget-a используется?

    Wget 1.5.3.1
     -s,  --save-headers        save the HTTP headers to file.
    Вообще-то она в данном случае не нужна, поставил по привычке.

    Код:
    for /f "delims=" %%i in ('wget -O - http://www.netikus.net/show_ip.html') do set "ip=%%i"
    echo IP= %ip%


    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 11:08 12-07-2007
    cluster

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ещё один вопросец:
     
    set _Dest=DB\1C\Enterprise\ACCOUNT
     
    как поменять значение переменной на
     
    ACCOUNT\Enterprise\1C\DB
     
    Т.е. зеркально перевернуть. Пути могут быть разной длинны.

    Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 13:02 12-07-2007
    Elroir



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

    Код:
     
    @echo off
    setlocal
    set "_Dest=DB\1C\Enterprise\ACCOUNT"
    call :next "%_Dest%"
    echo %_result%
    rem ...
    rem your code here
    rem ...
    goto :EOF
    :next
    for /f "tokens=1* delims=\" %%a in ("%~1") do call :reverse "%%a" "%%b"
    goto :EOF
    :reverse
    set "_result=%~1\%_result%"
    if "%~2"=="" (
    set "_result=%_result:~0,-1%"
    goto :EOF
    )
    call :next "%~2"
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 13:39 12-07-2007
    igor_andreev

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

    Код:

    @echo off
    setlocal
     
    set _Dest=DB\1C\Enterprise\ACCOUNT
     
    for /f "tokens=1-26 delims=\" %%a in ('echo %_Dest%') do (
    set reversed=%%z/%%y/%%x/%%w/%%v/%%u/%%t/%%s/%%r/%%q/%%p^
    /%%o/%%n/%%m/%%l/%%k/%%j/%%i/%%h/%%g/%%f/%%e/%%d/%%c/%%b/%%a)
     
    :trim
    if "%reversed:~0,1%" equ "/" (
        set "reversed=%reversed:~1%"
        goto :trim
    )
     
    echo %reversed%

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 13:41 12-07-2007
    cluster

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребят, благодарю.
    Elroir
    Выдаёт инвертированную переменную+оригинал
    igor_andreev
    Как часы, только с задержкой.. некритично.

    Всего записей: 1720 | Зарегистр. 21-11-2003 | Отправлено: 14:58 12-07-2007
    Elroir



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

    Цитата:
    Выдаёт инвертированную переменную+оригинал

    Это как? В переменной _result должна быть инвертированная строчка и все.
    P.S. Я проверял
     
    Добавлено:
    igor_andreev
    Кстати, ты слэши тоже "зеркально перевернул"

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:07 12-07-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    Угу, не обратил внимания куда слеши смотрят. Батник с какого-то разбора url остался типа ftp:/host/dir/subdir

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 16:12 12-07-2007
    newhome

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте.  
    Подскажите, пжста, как мне сделать чтобы в данных циклах вырезались последние 3 цифры из цикла №3 %%b . Важно (!), чтобы цифры вырезались в цикле, т.к. цикл обрабатывает файл, вырезает из него цифры и запихивает их в имя файла:  
    результ 1 цикла |  результ 2 цикла | результ 3 цикла:  
    2220011.kvt            0555611                  1            
    2220021.kvt            0555632                  2    
    2224411.kvt            0555611                  1
    2225311.kvt            0555632                  2
    -------------------------------------------------------------------------------------------------
    for /F "usebackq tokens=4 delims=,.kvtKVT " %%i in (`find ".KVT" C:\Astra\LOG\ac_%day%.log`) do (
    for /F "usebackq skip=2 tokens=5 delims= " %%a in (`find "BLABLA: " C:\BAT\KVT\%%~i.KVT`) do (
    for /F "usebackq tokens=3 delims=xyz " %%b in (`find "BLABLA2: " C:\BAT\KVT\%%~i.KVT`) do (
    echo copy %%i  %%a%%b
    )  
    )
    )
    ---------------------------------------------------------------------------------------------------
    Никак не получается "вынуть" 0555 из результата 2 цикла не завершая цикл (если завершить цикл, то файлы 2 цикла не будут обработаны)  Помогите пжста.

    Всего записей: 11 | Зарегистр. 14-06-2007 | Отправлено: 18:29 12-07-2007
    Elroir



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

    Код:
    setlocal enabledelayedexpansion
    for /F "usebackq tokens=4 delims=,.kvtKVT " %%i in (`find ".KVT" C:\Astra\LOG\ac_%day%.log`) do (  
    for /F "usebackq skip=2 tokens=5 delims= " %%a in (`find "BLABLA: " C:\BAT\KVT\%%~i.KVT`) do (  
    for /F "usebackq tokens=3 delims=xyz " %%b in (`find "BLABLA2: " C:\BAT\KVT\%%~i.KVT`) do (  
    set "tmp=%%b"
    set "tmp=!tmp:~-3!"  
    echo copy %%i  %%a!tmp!  
    )  
    )  
    )


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:05 13-07-2007
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть небольшая задачка. Есть такой сервис - Rapidshare.com. После загрузки файла он временно блокирует Ваш IP.
    Как батником проверить, есть ли Ваш IP в этом списке?
    Дело в том, что при простом смене IP легко нарваться на уже заблокированный.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 03:00 13-07-2007
    01MDM



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

    Цитата:
    утилита DISKPART.EXE

    Diskpart есть. Можно ли как-нибудь определить является cd-rom физическим или виртуальным?

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 07:19 13-07-2007
    j0yb1tyr

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени,
    Существует простейшая задачка, хотелось бы чтобы подтлкнули на ее решение.
    Алгоритм следущий:
    ------------------------------------------------------------------
    найти файл с последними изменениями *.расширение1
    скопировать в папку out
    найти файл с посл. изменениями *.расширение2
    скопировать в папку out
    открываем ФТП
    коннект к серверу
    логин
    пароль
    открыть DIR1
    отправить файл1
    открыть DIR2
    отправить файл2
    закрыть соединение
     
    ----------------------------------------------
    Вот так. Проблема, точне не знание решения;) в следующем. Это в коннекте к ftp серверу под учетной записью и поиск среди массива файлов с одинаковыми расширениями ( назания у всех разные) файлы с последней датой измений.
    Заранее спасибо.

    Всего записей: 2 | Зарегистр. 22-01-2007 | Отправлено: 11:53 13-07-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