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

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

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

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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:53 09-01-2011 | Исправлено: mazafakermazafaka, 11:22 04-06-2011
    Road Runner J



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день!
    Как выдрать количество хопов до хоста по результатам traceroute, то есть еcли хопов 10 то соответственно чтоб скрипт показал цифру 10 в конце или если 15 то 15, типа echo 15? wsh и powershell допустимы.

    Всего записей: 179 | Зарегистр. 01-06-2006 | Отправлено: 12:20 01-02-2011
    res2001



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

    Код:
    @echo off  
    for /f "skip=4 tokens=1" %%a in ('tracert %1') do if %%a gtr 0 (set "hop=%%a") else call echo.%%hop%% & exit

     
    в параметре передаешь имя сайта или адрес

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 12:42 01-02-2011 | Исправлено: res2001, 13:48 01-02-2011
    Road Runner J



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

    Цитата:
    Добрый день!  
    Как выдрать количество хопов до хоста по результатам traceroute, то есть еcли хопов 10 то соответственно чтоб скрипт показал цифру 10 в конце или если 15 то 15, типа echo 15? wsh и powershell допустимы.

     
    res2001

    Код:
    @echo off  
    for /f "skip=4 tokens=1" %%a in ('tracert %1') do if %%a gtr 0 (set "hop=%%a") else call echo.%%hop%% & exit

     
    А как сделать чтобы в конце показывал TOO MANY HOPS, если хопов более 20 и как остановить выполнение скрипта если пингов нет вообще, а то скрипт зависает без пингов, ну и соответственно выдать сообщение в конце NO CONNECTION?
    Сорри, заранее не предусмотрел, что задачка может немного усложнитьсяв связи с несколькими возможными результатами.

    Всего записей: 179 | Зарегистр. 01-06-2006 | Отправлено: 14:33 01-02-2011 | Исправлено: Road Runner J, 14:36 01-02-2011
    res2001



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

    Код:
    @echo off
    >nul ping -n 1 %1 || (echo.NO CONNECTION    %1 & exit)
    for /f "skip=4 tokens=1" %%a in ('tracert -d -h 21 %1') do if %%a gtr 0 (set "hop=%%a" & if %%a gtr 20 echo TOO MANY HOPS & exit) else call echo.%%hop%% & exit
     

     

    Цитата:
    скрипт зависает без пингов

    он не зависает - это tracert долго отрабатывает.
     
    Добавлено:
    вариант с TOO MANY HOPS не проверял - как-то не нашел узла с большим числом хопов.
     
    Поправил параметры запуска tracert - убрал разрешение имен и ограничил число прыжков, так будет быстрее добираться до TOO MANY HOPS.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 14:47 01-02-2011 | Исправлено: res2001, 14:59 01-02-2011
    wolf0425



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

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 18:38 01-02-2011 | Исправлено: wolf0425, 18:38 01-02-2011
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    хм... как заставить findstr искать только символы a-f, 0-9 и :?

    Код:
    findstr /i ": [a-f] [0-9]"
    не выходит.. точнее, ошибку не выдает, если буквенный символ, напр., Z.
    ищется в параметре

    Код:
    /color:02

    в последних трех символах.

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 01:15 02-02-2011 | Исправлено: Free_Soft, 01:16 02-02-2011
    01MDM



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

    Код:
     
    findstr /i "\<\/color:[0-9a-f][0-9a-f]\>"
     



    ----------
    Вопросы в личке останутся без ответа

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



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    пасиб. теперь вот в другом параметре ищутся только цифры. понятно, что тогда так:

    Код:
    findstr "\<\:[0-9][0-9]\>"

    Это для двух разрядов, но проблема в том, что цифр может быть от одной до трех. Как можно это обойти?

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 09:02 02-02-2011
    aidarsimon



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    здравствуйте. Имеется бат файл, с помощью которого создается бэкап, архивируются папки. И все это записывается в лог-файйл. Вопрос - как убрать знаки, которые вставляет winrar
     

    Код:
    "c:\Program Files\WinRAR\Rar.exe" a -ep1 -m5 -rr10p "d:\admin\backup\backup_\%date%\1cv77.rar" "d:\admin\backup\backup_\%date%\1cv77" >>"d:\admin\backup\отчет от %date%.txt"  


    Код:
    Создание архива d:\admin\backup\backup_\02.02.2011\1cv77.rar
     
    Добавление d:\admin\backup\backup_\02.02.2011\1cv77\1c75_77.txt             0%  OK  
    Добавление d:\admin\backup\backup_\02.02.2011\1cv77\BIN\1crcrus.dll         0%  1%  2%  3%  4%  5%  6%  7%  8%  OK  
    Добавление d:\admin\backup\backup_\02.02.2011\1cv77\BIN\1cv7.exe            9% 10%  OK  
    Добавление d:\admin\backup\backup_\02.02.2011\1cv77\BIN\1CV7.hlp           10% 11% 12% 13% 14% 15% 16% 17% 18% 19% 20% 21% 22% 23% 24% 25% 26% 27%  OK  
    Добавление d:\admin\backup\backup_\02.02.2011\1cv77\BIN\1CV7.SPL           27%  OK  
    Добавление d:\admin\backup\backup_\02.02.2011\1cv77\BIN\1cv7Cnfg.tip       27%  OK  
    Добавление d:\admin\backup\backup_\02.02.2011\1cv77\BIN\1CV7FILE.LST       27%  OK  
    Добавление d:\admin\backup\backup_\02.02.2011\1cv77\BIN\1cv7Lang.als       27% 28% 29% 30%  OK  
    Добавление d:\admin\backup\backup_\02.02.2011\1cv77\BIN\1cv7Main.tip       30%  OK  
    Добавление d:\admin\backup\backup_\02.02.2011\1cv77\BIN\1cv7tOpr.als       30% 31%  OK  
    Добавление d:\admin\backup\backup_\02.02.2011\1cv77\BIN\Account.dll        31% 32% 33% 34% 35%  OK  
    Добавление d:\admin\backup\backup_\02.02.2011\1cv77\BIN\Basic.dll          35% 36% 37% 38% 39% 40% 41%  OK  
    Добавление d:\admin\backup\backup_\02.02.2011\1cv77\BIN\BkEnd.dll          41% 42% 43% 44% 45% 46% 47% 48% 49% 50% 51% 52% 53% 54%  OK  
    Добавление d:\admin\backup\backup_\02.02.2011\1cv77\BIN\BLang.dll          55%  OK  
    Добавление d:\admin\backup\backup_\02.02.2011\1cv77\BIN\br32.dll           55% 56%  OK  
    Добавление d:\admin\backup\backup_\02.02.2011\1cv77\BIN\Config.dll         56% 57% 58% 59% 60% 61% 62% 63% 64% 65% 66% 67% 68% 69% 70% 71%  OK  

     
    А как потом отправить на e-mail письмо с прикрепленным отчетом?

    Всего записей: 3749 | Зарегистр. 06-09-2008 | Отправлено: 10:22 02-02-2011
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Free_Soft
    Цитата:
    Это для двух разрядов, но проблема в том, что цифр может быть от одной до трех. Как можно это обойти?

    вариант "цифр от одной до дофига" findstr /r "\:[0-9][0-9]*\>"  
     
    а если надо именно от одной до трех - то для того же :nnn> можно например так:
    sed -n -r "/:[0-9]{1,3}>/p" <file
     
    Добавлено:
    aidarsimon
    Цитата:
    как убрать знаки, которые вставляет winrar  
    во-первых не winrar, а rar - если верить твоему коду. Есть нюансы.
    во вторых что тебе надо то - подсказать какой ключик отвечает за отключение этих nn%
    типа в rar /? это непонятно? -idp
    - или какой утилиткой почистить уже имеющийся лог от этих nn%?
     

    Цитата:
    А как потом отправить на e-mail
    в шапке в полезных утилитах есть blat

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 12:38 02-02-2011 | Исправлено: wolf0425, 13:02 02-02-2011
    aidarsimon



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

    Цитата:
    во вторых что тебе надо то - подсказать какой ключик отвечает за отключение этих nn%  
    типа в rar /? это непонятно? -idp  
    - или какой утилиткой почистить уже имеющийся лог от этих nn%?  

    и то и то было бы неплохо

    Цитата:
    Цитата:
    А как потом отправить на e-mail
    в шапке в полезных утилитах есть blat  

    спасибо.

    Всего записей: 3749 | Зарегистр. 06-09-2008 | Отправлено: 14:32 02-02-2011
    wolf0425



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

    Цитата:
    и то и то было бы неплохо  
    первое написано же - -idp  
    а чистить логи - sed тебе в руки...
    sed -r "s;....\x08{1,};;gi" <in >out

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 15:08 02-02-2011 | Исправлено: wolf0425, 15:15 02-02-2011
    aidarsimon



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    нашел в хэлпе, не ругайся. оптишусь если что )
     
    Добавлено:
    Все четко, спасибо. Надо было сразу мануал по rar смотреть а не по winrar

    Всего записей: 3749 | Зарегистр. 06-09-2008 | Отправлено: 15:09 02-02-2011
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день!
    у меня в batch есть проверка файлов

    Код:
    set Docs="%~dp0Tools\"
    PATH %Docs%;%PATH%
    if not exist %Docs%advdef.exe set "nofile=%nofile%Advdef "
    ...
    if not exist %Docs%config.ini set "nofile=%nofile%config.ini"
    if defined nofile (
        echo Приложение не смогло получить доступ к следующим файлам:
        echo %nofile%
    )

    Подскажите, как сделать, чтобы %nofile% (все не найденные файлы) был в виде столбца, а не строки как сейчас?

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 16:46 02-02-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    lorents
    Способ 1: список файлов сохраняй во временный файл, потом его печатай.
    Способ 2: при создании списка файлов отделяй их друг от друга пробелами, выводи список так: for %%a in (%nofile%) do echo.%%a

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 17:00 02-02-2011
    lorents



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

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 17:07 02-02-2011
    Free_Soft



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

    Код:
    echo %par1% | find /i "color" >nul && set colrp=%par1:~6,9%
    echo %par2% | find /i "color" >nul && set colrp=%par2:~6,9%
    echo %par3% | find /i "color" >nul && set colrp=%par3:~6,9%
    echo %par4% | find /i "color" >nul && set colrp=%par4:~6,9%

     
    типа так?

    Код:
    for %%a in (%par1% %par2% %par3% %par4%) do (
        find /i "color" %%a >nul && set colrp=%par2:~6,9%
    )

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 18:14 02-02-2011
    wolf0425



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

    Цитата:
    А как можно это сократить?  
    наверно так:
    Код:
    for %%a in (%par1% %par2% %par3% %par4%) do set "_tmp=%%~a" & find /i "color" %%a >nul && call set "colrp=%%_tmp:~6,9%%"

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 18:42 02-02-2011 | Исправлено: wolf0425, 18:43 02-02-2011
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Красиво...)
    только %par1%...%par4% имеют вид типа /color:xx. Слеш не помешает в твоей конструкции?
     
    Добавлено:
    помешает... как быть?

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



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

    Цитата:
    А как можно это сократить?


    Код:
     
    @echo off
    setlocal
     
    set "par1=/color:01"
    set "par2=/color:02"
    set "par3=/coler:03"
    set "par4=/color:04"
     
    for /f "tokens=2,3 delims=:/" %%i in ('set par') do if "%%i"=="color" set "colrp=:%%j"
     

     
    ЗЫ. Только не ясен смысл, или в переменных только один /color:xx ?


    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:35 02-02-2011 | Исправлено: 01MDM, 20:43 02-02-2011
       

    Страницы: 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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 10
    vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru