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

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



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

    Цитата:
    тоже верно если не цеплятся к PID

    А в чем проблема?
    Код:
    tokens=2,3 %a
    и вперед:
    Код:
    if %b geq 80 taskkill /pid %a


    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 12:56 28-04-2010
    mugil_cephalus

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

    Цитата:
    нашел прогу ... но там нет  CPU Usage

    Example 1: Sample Output
    The following display shows sample PMon output of a computer running Windows XP Professional.
     
     Memory:  130612K Avail:  28660K  PageFlts:   338 InRam Kernel: 1988K P:10868K
     Commit: 190684K/ 135668K Limit: 314732K Peak: 251772K  Pool N: 9000K P:12484K
     
                    Mem  Mem   Page   Flts Commit  Usage   Pri  Hnd Thd  Image
    CPU  CpuTime  Usage Diff   Faults Diff Charge NonP Page     Cnt Cnt  Name
     
                  27348   28   917631    7                             File Cache
    95  30:35:30     20    0        1    0      0    0    0  0    0  1 Idle Process
     0   0:01:39     24    0     9976    0     36    0    0  8  695 56 System
     0   0:00:00     44    0      736    0    212    0    5 11   28  4 smss.exe
     0   0:00:27   1788    0    14097    0   1816    5   51 13  564 11 csrss.exe
     0   0:00:22   3780    0    29807    0   8804   46   63 13  595 19 winlogon.exe

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 13:07 28-04-2010
    mouser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Joo1z
    почему в батнике не работает ???  
     
    z was unexpected at this time.

    Код:
    :start
    for /f "tokens=3" %z in ('pslist.exe -s 2 ^| findstr /i "firefox"') do @if %z geq 1 echo fedsf
    goto :start
    :KILL
    tasklist /FI "IMAGENAME eq firefox.exe
    start call firefox.exe
    goto :start

    Всего записей: 800 | Зарегистр. 10-11-2006 | Отправлено: 13:08 28-04-2010
    Joo1z



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

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 13:14 28-04-2010
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вопрос к гуру батаники:
    как в утилите hs_message.exe прикрутить свою иконку в начале заголовка? Добавление файла иконки к exexшнику решает пробему только для отображения в панели задач.
    Заранее спасибо

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 16:51 28-04-2010
    dredd00

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Господа, помогите пожалуйста.
    надо выдрать даты создания файлов для сравнения по имени и дате времени
    делаю как в примере про переименование
    for %%i in (*.rar) do @call :compare %%i %%~ta
     
     
    при выполнении пишет:
    C:\work\dictupdates\down>for %i in (*.rar) do @call :compare %i %~ta
    Следующее использование оператора пути при подстановке параметров
    в пакетных файлах является недопустимым: %~ta
     
    Для просмотра списка допустимых форматов введите CALL /? или FOR /?
    Следующее использование оператора пути при подстановке параметров
    в пакетных файлах является недопустимым: %~ta
     
    Для просмотра списка допустимых форматов введите CALL /? или FOR /?

    Всего записей: 71 | Зарегистр. 27-02-2007 | Отправлено: 20:31 28-04-2010
    ForposT_ForeveR



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

    Код:
    "C:\Program Files\WINRAR\Rar.exe" x -ad  a.rar

     
    Подскажите пожалуйста, как его переделать, так чтобы с помощью него можно было открыть любой раровский файл и вместо a.rar автоматически подставился его полный путь и выполнялась команда.

    Всего записей: 525 | Зарегистр. 11-12-2004 | Отправлено: 20:35 28-04-2010
    Listener92

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как реализовать в bat-файле ввод логина и пароля?  
    Ну, к примеру, мне нужно через написать батник, который запускает телнет, вписывает адрес, логин и пароль и последующие команды.
    Как это реализовать?

    Всего записей: 1 | Зарегистр. 28-04-2010 | Отправлено: 21:44 28-04-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Listener92
    http://forum.ru-board.com/topic.cgi?forum=5&topic=33080&start=20#19
    runas /?
     
    Добавлено:
    dredd00

    Цитата:
    делаю как в примере про переименование  
    for %%i in (*.rar) do @call :compare %%i %%~ta  

    покажи свой полный код

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 22:26 28-04-2010 | Исправлено: mugil_cephalus, 22:32 28-04-2010
    dredd00

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    собственно кода еще нет. но уже не работает©. вот тестовый файл целиком
     

    Код:
    cd down
    for %%i in (*.rar) do copy %%i old\%%i /y
    for %%i in (*.rar) do @call :compare %%i %%~ta
    :EoF
     
    :compare
    set f_name=%1
    set f_date=%2
    set f_time=%3
    GoTo :EoF
     
    :EoF

    Всего записей: 71 | Зарегистр. 27-02-2007 | Отправлено: 08:12 29-04-2010
    mugil_cephalus

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

    Код:
    cd down  
    for %%i in (*.rar) do copy %%i old\%%i /y
    for %%i in (*.rar) do @call:compare "%%~i" %%~ti
    goto:eof
     
    :compare
    set "f_name=%~1"
    set "f_date=%~2"
    set "f_time=%~3"
    GoTo:EoF

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 08:55 29-04-2010
    dredd00

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

    Всего записей: 71 | Зарегистр. 27-02-2007 | Отправлено: 09:16 29-04-2010
    mugil_cephalus

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

    Цитата:
    Спасибо большое работает. тока не понял почему так.....

    см. for /?

    Цитата:
    собственно кода еще нет. но уже не работает©. вот тестовый файл целиком  
     
     
    Код:cd down  
    for %%i in (*.rar) do copy %%i old\%%i /y  
    for %%i in (*.rar) do @call :compare %%i %%~ta  
    :EoF  
     
    :compare  
    set f_name=%1  
    set f_date=%2  
    set f_time=%3  
    GoTo :EoF  
     
    :EoF  

    %%a - эта переменная в блоке итератора цикла не определена, а определена только %%i

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 09:48 29-04-2010
    kilserg



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет всем.
    Надо в текстовом файле проверять наличие определенной строки, и если ее нет, то добавлять ее в конец файла.
     
    Вот что я придумал вкупе с sed'ом:
     
    for /f %%j in ('cmd /c sed -n -e /string/p file.txt') do set found=1
    if "%found%"=="" (
        echo.
        echo string>> file.txt
    )
     
    for /f не выполняется, если результат команды пустой, задается переменная и выводится новая строка в файл.
     
    Ну а вопрос прозаический. Есть какие-нибудь команды, которые позволяют использовать результат выполнения другой команды кроме for?
    Можно ли как-нибудь сделать это, так сказать, в одну строку и без посторонних утилит, наподобие sed'а (им еще не научился пользоваться нормально, но думаю, что можно обойтись только им).

    Всего записей: 12 | Зарегистр. 20-10-2009 | Отправлено: 13:32 29-04-2010
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kilserg
    А зачем так сложно?
    Код:
    FINDSTR /B /C:"строка поиска" aaa.txt||(ECHO строка поиска>>aaa.txt)


    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 13:45 29-04-2010 | Исправлено: yurkesha, 13:57 29-04-2010
    ipmanyak



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Listener92
    @echo off  
    set /p "given=Input ip: "  
    set /p "logins=Input Login: "  
    if defined logins (  
    telnet -l %logins%  %given%  
    )
    pause
       
    с паролем не получится, у виндового телнета нет в параметрах передачи пароля.
    Причем еще телнет на той стороне должен поддерживать TELNET ENVIRON option, чтобы схавать юзернэйм в параметрах.
     


    ----------
    В сортире лучше быть юзером, чем админом...

    Всего записей: 11724 | Зарегистр. 10-12-2003 | Отправлено: 13:46 29-04-2010
    mugil_cephalus

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

    Код:
    rem @echo off
    pushd "%~d0\"
    chcp 1251>nul
    for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do for /f "tokens=*" %%a in ('dir /b/s/a-d "%%~i:\*.rar"') do call:_1 "%%~a"
    popd
    chcp 866>nul
    pause
    goto:eof
     
    :_1
    set /p "uchoice=Do you wish to expand %~1. Y/N ?"
    if /i "_%uchoice%" equ "_n" goto:eof
    cd /d "%~dp1"
    "C:\Program Files\WINRAR\Rar.exe" x -ad "%~1"
    goto:eof

     
    только протестируй сначала

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 15:44 29-04-2010
    ForposT_ForeveR



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    mugil_cephalus
     
    Не работает.
    Ещё раз.
    Может задачу не так изложил.
     
    Задача стоит, в том, чтобы связать расширение рар с батником. И при запуске файла рар, создавалась директория и туда распаковался файл. Т.е. чтобы батник мог динамически получать название файла, а не статически в нём забивать только одно название.

    Всего записей: 525 | Зарегистр. 11-12-2004 | Отправлено: 16:38 29-04-2010
    duh_S

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

    Цитата:
    вот как сейчас:  
     

    Код:
    set ThisCmdDir=%~dp0  
    Set path_ACCOUNT_VCF="%ThisCmdDir%ACCOUNT_duh.VCF"  
    Set "Key=@mail.ru"  
    setlocal enabledelayedexpansion  
    For /F "usebackq delims=" %%i in (`Find /I "%Key%" ^< %path_ACCOUNT_VCF%`) Do Set "Value=%%i" & for /f "delims=:" %%j in ("!Value:%Key%=:!") do set "Value=%%j"  
    @Echo.%Value%  

     
     
    листинг:  
     

    Код:
    >set ThisCmdDir=F:\бат\обработка текста\  
     
    >Set path_ACCOUNT_VCF="F:\бат\обработка текста\ACCOUNT_duh.VCF"  
     
    >Set "Key=@mail.ru"  
     
    >setlocal enabledelayedexpansion  
     
    >For /F "usebackq delims=" %i in (`Find /I "@mail.ru" < "F:\бат\обработка текста\ACCOUNT_duh.VCF"`) Do Set "Value=%i"   & for /F "delims=:" %j in ("!Value:@mail.ru=:!") do set "Value=%j"  
     
    >Set "Value=EMAIL;PREF;INTERNET:NovikovSM@mail.ru"   & for /F "delims=:" %j in ("!Value:@mail.ru=:!") do set "Value=%j"  
     
    >set "Value=EMAIL;PREF;INTERNET"  
    EMAIL;PREF;INTERNET  

     
     

     
    подскажите как выделить
     
    Код:
    NovikovSM


    Всего записей: 66 | Зарегистр. 28-08-2007 | Отправлено: 17:54 29-04-2010
    mugil_cephalus

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

    Код:
    assoc .rar>backup.txt 2>&1
    ftype WinRAR>>backup.txt 2>&1
    ftype WinRAR="C:\Program Files\WINRAR\Rar.exe" x -ad "%1"
    pause

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 22:04 29-04-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