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

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



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

    Цитата:
    Попробуйте так
     
    Код:
    IF NOT EXIST "par1" goto:err  

    Так тоже не работает

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 01:03 15-05-2010
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Free_Soft
    да ты в конце просто допиши goto :err

    Код:

    :input  
    if /i "%par1%" == "act" goto:0  
    if /i "%par1%" == "qt"  goto:3  
    if /i "%par1%" == "tt"  goto:4  
    if /i "%par1%" == "us"  goto:5  
    if /i "%par1%" == "is"  goto:6  
    if /i "%par1%" == "srv" goto:7  
    if /i "%par1%" == "?"   goto :help
    goto :err

    Батник сверху вниз проверит все возможные варианты значений par1 и уйдет на :err, если не найдет нужного.

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 01:56 15-05-2010
    Mark_Titov



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

    Код:
    @echo off  
    setlocal enabledelayedexpansion  
    set /a cnt=-1  
    ser pr=  
    for /f "tokens=1,3 delims=: " %%a in ('tasklist ^| findstr opera.exe ^| findstr /n opera.exe') do echo %%a    %%b & set pr=!pr!,%%b  
    set pr=!pr:~1!  
    echo Enter number of prosess:  
    set /p kill=  
    for /d %%t in (!pr!) do set /a cnt+=1 & if !cnt!==%kill% echo taskkill /pid %%t

    Joo1z - спасибо большое, а почему имя процесса не отображается?
    ...и как это для удаленной машины применить?
    ...и ввод номера процесса почему то всегда под надписью "Enter number of prosess:"
    А в остальном все хорошо...
     
    Благодарю тебя...

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 07:19 15-05-2010 | Исправлено: Mark_Titov, 07:28 15-05-2010
    Joo1z



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

    Код:
    @echo off  
    setlocal enabledelayedexpansion
    set /a cnt=0
    set pr=
    for /f "tokens=1,2,3 delims=: " %%a in ('tasklist /s %1 ^| findstr opera.exe ^| findstr /n opera.exe') do echo %%a    %%b    %%c & set pr=!pr!,%%c
    set pr=!pr:~1!
    echo Enter number of prosess:
    set /p kill=
    for /d %%t in (!pr!) do set /a cnt+=1 & if !cnt!==%kill% echo taskkill /s %1 /pid %%t

    Для запуска на удаленной машине запускать нужно script.cmd pcname.
    Если не нравится надпись, то убери строчку с Echo
    И с начальным значением переменной cnt какая-то ерунда.

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 07:40 15-05-2010 | Исправлено: Joo1z, 07:42 15-05-2010
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
    спасибо! все гениальное просто))

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 08:05 15-05-2010
    Mark_Titov



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

    Цитата:
    Код:@echo off  
    setlocal enabledelayedexpansion  
    set /a cnt=0  
    set pr=  
    for /f "tokens=1,2,3 delims=: " %%a in ('tasklist /s %1 ^| findstr opera.exe ^| findstr /n opera.exe') do echo %%a    %%b    %%c & set pr=!pr!,%%c  
    set pr=!pr:~1!  
    echo Enter number of prosess:  
    set /p kill=  
    for /d %%t in (!pr!) do set /a cnt+=1 & if !cnt!==%kill% echo taskkill /s %1 /pid %%t  
     
     
    Для запуска на удаленной машине запускать нужно script.cmd pcname.  
    Если не нравится надпись, то убери строчку с Echo  
    И с начальным значением переменной cnt какая-то ерунда.

    ...спасибо, но он ругается на "/s",  

    Код:
    ERROR: Invalid Syntax. Value expected for '/s'.
    Type "TASKLIST /?" for usage.
    Enter number of prosess:
     

    убераю его - не ругается, почему?

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 09:29 15-05-2010 | Исправлено: Mark_Titov, 09:47 15-05-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    stydent62
    попробуй писать путь короткими dos-именами, пример - F:\DOCUME~1\ADMIN\APPLIC~1\HEWLET~1>
     
    Добавлено:
    Mark_Titov
    %1 покажи
     
    /s компьютер  
    Указывает имя или IP-адрес удаленного компьютера (не используйте обратную косую черту).

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 09:29 15-05-2010 | Исправлено: mugil_cephalus, 09:52 15-05-2010
    Mark_Titov



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

    Цитата:
    Mark_Titov  
    %1 покажи

    В смысле? Результат?
     
    Если да, то вот -
    ...сделал вот так -

    Код:
    @echo off
    echo.  
    setlocal enabledelayedexpansion  
    set /a cnt=0  
    set pr=  
    for /f "tokens=1,2,3 delims=: " %%a in ('tasklist %1 ^| findstr opera ^| findstr /n opera') do echo %%a    %%b    %%c & set pr=!pr!,%%c  
    set pr=!pr:~1!
    echo.
    echo Enter number of prosess:  
    set /p kill=
    for /d %%t in (!pr!) do set /a cnt+=1 & if !cnt!==%kill% echo taskkill /s %1 /pid %%t

    ...вот результат -

    Код:
     
    1    opera.exe    1936
     
    Enter number of prosess:
     

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 09:53 15-05-2010
    Joo1z



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mark_Titov
    Добавь после setlocal enabledelayedexpansion
    Код:
     
    set pc=%1
    IF NOT DEFINED pc set pc=%computername%

    а вместо %1 ниже по тексту вставь %pc%
    Если будешь просто запускать скрипт, то он будет выполняться для локальной машигы, если будешь указывать в качестве параметра имя машины, то скрипт будет выполняться для нее.
     
    Внимательно посмотри на то, что я зеленым выделил в предыдущем посте.

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 09:55 15-05-2010 | Исправлено: Joo1z, 10:02 15-05-2010
    mugil_cephalus

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

    Цитата:
    /s компьютер  
    Указывает имя или IP-адрес удаленного компьютера (не используйте обратную косую черту).

    вот чего в хелпе написали

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 09:59 15-05-2010
    Mark_Titov



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

    Цитата:
    Если будешь просто запускать скрипт, то он будет выполняться для локальной машигы, если будешь указывать в качестве параметра имя машины, то скрипт будет выполняться для нее.

    ...спасибо парни, но мне нужно это в самом батнике прописать, без скрипта если можно, пока чего-то не получается для удаленной машины сделать. (

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 10:14 15-05-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Unitaz
    reg /?
    shutdown /?
     
    Добавлено:
    Mark_Titov
    если у тебя %1 в коде раскрывается в \\comp  то пропиши в коде  
    set "rmtpc=%~1"
    set "rmtpc=%rmtpc:\\=%"

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



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

    Код:
    @echo off
    setlocal enabledelayedexpansion
    set /a cnt=0
    set pr=
    for /f "tokens=1,2,3 delims=: " %%a in ('tasklist -s \\comp_name ^| findstr 00-80 ^| findstr /n 00-80') do echo %%a    %%b    %%c & set pr=!pr!,%%c  
    set pr=!pr:~1!
    echo.
    echo Enter number of prosess:  
    set /p kill=
    for /d %%t in (!pr!) do set /a cnt+=1 & if !cnt!==%kill% echo taskkill /s %1 /pid %%t

    ...а вот так (с переменными) почему-то не хочет -

    Код:
    @echo off
    setlocal enabledelayedexpansion
    set sever=\\comp_name
    set /a cnt=0
    set pr=
    for /f "tokens=1,2,3 delims=: " %%a in ('tasklist %server% ^| findstr 00-80 ^| findstr /n 00-80') do echo %%a    %%b    %%c & set pr=!pr!,%%c  
    set pr=!pr:~1!
    echo.
    echo Enter number of prosess:  
    set /p kill=
    for /d %%t in (!pr!) do set /a cnt+=1 & if !cnt!==%kill% echo taskkill /s %1 /pid %%t

    ...почему?

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 13:23 15-05-2010 | Исправлено: Mark_Titov, 13:24 15-05-2010
    wolf0425



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

    Цитата:
    ...а вот так (с переменными) почему-то не хочет -
    tasklist %server%  

    а не хочет потому что ты не сделал tasklist /? переl тем как на форум писать

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 14:00 15-05-2010
    mugil_cephalus

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

    Цитата:
    set sever=\\comp_name  

    исправь на server

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 14:03 15-05-2010
    Mark_Titov



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

    Цитата:
    исправь на server

    ...))) да, спешил, но прописывал правильно.
    Спасибо за поправку...
     

    Цитата:
    а не хочет потому что ты не сделал tasklist /? переl тем как на форум писать

    wolf0425
    ...ты прав, мелочь - но важная -

    Код:
    @echo off
    echo.
    setlocal enabledelayedexpansion
    set server=\\comp_name
    set /a cnt=0
    set pr=
    for /f "tokens=1,2,3 delims=: " %%a in ('tasklist -s %server% ^| findstr 00-80 ^| findstr /n 00-80') do echo %%a    %%b    %%c & set pr=!pr!,%%c  
    set pr=!pr:~1!
    echo.
    echo Enter number of prosess:  
    set /p kill=
    for /d %%t in (!pr!) do set /a cnt+=1 & if !cnt!==%kill% echo taskkill /s %1 /pid %%t

     
    А можно из показываемого списка убрать расширения ".exe"?
    И как все таки сделать что бы курсор мигал не ПОД надписью "Enter number of prosess:", а в конце нее как обычно?
     
    Спасибо всем кто помогает!...

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 14:50 15-05-2010 | Исправлено: Mark_Titov, 14:51 15-05-2010
    vaddy3

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите пожалуйста какой путь прописать. Хочу в процессе установки виндоус сразу же закинуть и мои темы для рабочего стола на системный диск. Один вариант я уже делал, когда темы были предустановлены я их загрузил разместив на инсталяционном диске вот в таком каталоге  \$OEM$\$$\RESOURCES\THEMES  и тогда после установки они у меня повлялись в винде вот здесь C:\Windows\Resources\Themes . Теперь мне необходимо закинуть темы вот сюда в винде C:\Users\Администратор\AppData\Local\Microsoft\Windows\Themes . Как будет выглядеть путь для файлов на инсталяционном диске для этого случая ?

    Всего записей: 86 | Зарегистр. 18-06-2007 | Отправлено: 15:45 15-05-2010 | Исправлено: vaddy3, 16:11 15-05-2010
    wolf0425



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

    Цитата:
    А можно из показываемого списка убрать расширения ".exe"?  
    а что - бывают другие?

    Цитата:
    И как все таки сделать что бы курсор мигал не ПОД надписью "Enter number of prosess:", а в конце нее как обычно?

    echo.
    set /p kill="Enter number of prosess: "

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 17:58 15-05-2010 | Исправлено: wolf0425, 17:59 15-05-2010
    Joo1z



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

    Цитата:
    А можно из показываемого списка убрать расширения ".exe"?  

    Добавь в разделители (delims) точку и рассматривай tokens=1,2,4

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 18:24 15-05-2010
    Mark_Titov



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

    Цитата:
    echo.  
    set /p kill="Enter number of prosess: "

    ...спасибо wolf0425, помогло.

    Цитата:
    а что - бывают другие?

    ...))) нет, я знаю, просто эти процессы ровно как и сервисы как ты знаешь у меня объекты, поэтому хотелось бы именно в отображении убрать exe...
     

    Цитата:
    Добавь в разделители (delims) точку и рассматривай tokens=1,2,4

    ...где именно? (извиняюсь но с кодом еще не знаком так как вы все).
     
    Спасибо...

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 18:41 15-05-2010 | Исправлено: Mark_Titov, 18:44 15-05-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