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

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

Модерирует : gyra, Maz

Maz (19-09-2020 13:36): Командная строка, батники, сценарии (bat, cmd) Часть 6  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

cchameleone



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
(часть 1) (часть 2) (часть 3) (часть 4)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ more ].  

Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Сценарии Windows

Полезные ссылки:
· Из Windows XP Professional Product Documentation:
» Описание Cmd.exe » Command shell overview
» Using batch files » Using batch parameters » Using filters » Using command redirection operators
 
· Уроки bat-аники (для начинающих): первый и второй
· Курс из 19 лекций "Командная строка и сценарии Windows"
· Попов А. Командная строка и сценарии Windows (PDF). Курс лекций для начинающих
· Бокалий В. Командная строка (pdf-брошюрка в 20 страниц)
· Александров А., Дибров А. Урок bat-аники (pdf)
· Уильям Р. Станек - Командная строка Windows. Справочник администратора
 
· Скрываем консольные окна, Выполнение BAT-скриптов без вызова окна консоли
· cmdow — изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· blat — отправка почты из консоли
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)(3)

Всего записей: 2271 | Зарегистр. 16-10-2015 | Отправлено: 09:22 29-04-2016 | Исправлено: Maz, 08:47 26-03-2020
YuS_2



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

Цитата:
А их - тьма

А Вы хотели на cmd состряпать алгоритмы ИИ?
Перечислите какие есть на машине диспетчеры и отслеживайте их...

Всего записей: 3194 | Зарегистр. 03-02-2009 | Отправлено: 07:56 23-03-2017
vasyosuol_24

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Я ничего не хотел. Просто если задача стоит "спрятать вирус от лоха", то это прокатит только в случае, если лох о диспетчере(ах) задач вообще не знает. Тогда и изгаляться нечего. В противном случае - увы...
Я просто не понимаю практического использования подобного...

Всего записей: 790 | Зарегистр. 16-01-2013 | Отправлено: 08:00 23-03-2017
YuS_2



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

Цитата:
если задача стоит "спрятать вирус от лоха"

такой задачи я не видел, а та,которую озвучили, вполне себе решена...

Всего записей: 3194 | Зарегистр. 03-02-2009 | Отправлено: 10:09 23-03-2017
thejustsoul



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

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

В скрипте процесс принудительно закрывается после запуска диспетчера и запускается после закрытия диспетчера, вот и "не видно", его там просто не может быть.
Для приостановки процессов, вместо закрытия, наверно можно использовать эту утилиту:
https://technet.microsoft.com/en-us/sysinternals/pssuspend.aspx

Код:
Заморозить процесс:
pssuspend.exe Project1.exe
Разморозить процесс:
pssuspend.exe -r Project1.exe
Project1.exe это имя процесса

Если я правильно понял, замените там команду закрытия (taskkill) на команду "заморозки", и вместо запуска (start), команду "разморозки".
upd: как-то так наверно:

Код:
@echo off
:loop
cls
tasklist | find /i "taskmgr.exe">nul 2>&1
if %errorlevel% EQU 0 (
    tasklist | find /i "Project1.exe">nul 2>&1
    if %errorlevel% NEQ 0 goto loop
        pssuspend.exe Project1.exe>nul 2>&1
    goto loop
)
tasklist | find /i "Project1.exe">nul 2>&1
if %errorlevel% EQU 0 pssuspend.exe -r Project1.exe>nul 2>&1
goto loop

Только не знаю как это будет работать, с приостановкой процесса, если его несколько раз приостановить, его придется несколько раз возобновить (проверил на скорую руку, как фиксить это хз, может быть использовать другой софт\утилиты\модифицировать скрипт типа добавления какого-нибудь счетчика\и т.д.).

Всего записей: 1782 | Зарегистр. 30-03-2014 | Отправлено: 17:42 23-03-2017 | Исправлено: thejustsoul, 17:49 23-03-2017
bizCorp

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, нужно запускать батником программку (с ключем)  с флешки под администратором на windows 10
 
В корене флешки лежит батник и программка, если батник запускать под пользователем -  программа запускается, но толком не работает (нужен админ права), если запускать под администратором, программа не запускается т.к батник не видит путь к программе.
 
Как в батнике (запускаемым под администратором) прописать путь к флешке, если буква флешки на разных компьютерах разная. Причем чтобы путь был именно моей флешки, даже если подключены другие.  
 

Код:
 
net session >nul 2>&1
if %errorLevel% == 0 (
echo off
ResourcesExtract.exe
) else (
cls
echo You must have administrator privilidges pause  
)
 
 

Всего записей: 358 | Зарегистр. 16-03-2005 | Отправлено: 16:07 27-03-2017 | Исправлено: bizCorp, 16:08 27-03-2017
YuS_2



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

Цитата:
Как в батнике (запускаемым под администратором) прописать путь к флешке, если буква флешки на разных компьютерах разная. Причем чтобы путь был именно моей флешки, даже если подключены другие.

Если батник запускается с флешки, то так и прописать:

Код:
%~dp0

Вы бы лучше сам сценарий показали, а вот тот пакетник, который Вы привели, вообще не нужен, это всего лишь проверка на запуск от имени администратора... но если это он и есть, то:

Код:
net session >nul 2>&1  
if %errorLevel% == 0 (  
echo off  
%~dp0ResourcesExtract.exe  
) else (  
cls  
echo You must have administrator privilidges pause  
)

Всего записей: 3194 | Зарегистр. 03-02-2009 | Отправлено: 16:54 27-03-2017 | Исправлено: YuS_2, 16:57 27-03-2017
sniffspb



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет. Еще раз спасибо за прошлую подсказку!
Подсажите plz,как сделать проверку запущенных процессов и в зависимости от результата далее выполнить сценарий_1 или сценарий_2 ?
 
Если обнаружен любой из процессов - 1.exe 2.exe 3.exe то срабатывает сценарий_1
Если не были обнаружены процессы - 1.exe 2.exe 3.exe то срабатывает сценврий_2
Заранее спасибо.

Всего записей: 22 | Зарегистр. 09-05-2007 | Отправлено: 13:33 29-03-2017
B3T6

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

Код:
set /a proc = 0
 
for /f %%p in ('"tasklist /nh 2>nul |find /c "1.exe""') do set /a proc += %%p
for /f %%p in ('"tasklist /nh 2>nul |find /c "2.exe""') do set /a proc += %%p
for /f %%p in ('"tasklist /nh 2>nul |find /c "3.exe""') do set /a proc += %%p
 
if .%proc% equ .0 goto :сценарий_2
goto :сценарий_1
 
 

Всего записей: 1078 | Зарегистр. 05-09-2010 | Отправлено: 18:08 29-03-2017
sniffspb



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

Цитата:
[/q]
[q]set /a proc = 0  
 
for /f %%p in ('"tasklist /nh 2>nul |find /c "1.exe""') do set /a proc += %%p  
for /f %%p in ('"tasklist /nh 2>nul |find /c "2.exe""') do set /a proc += %%p  
for /f %%p in ('"tasklist /nh 2>nul |find /c "3.exe""') do set /a proc += %%p  
 
if .%proc% equ .0 goto :сценарий_2  
goto :сценарий_1

 
Результата нет..
 
set /a proc = 0
 
for /f %%p in ('"tasklist /nh 2>nul |find /c "notepad.exe""') do set /a proc += %%p
for /f %%p in ('"tasklist /nh 2>nul |find /c "notepad.exe""') do set /a proc += %%p
for /f %%p in ('"tasklist /nh 2>nul |find /c "notepad.exe""') do set /a proc += %%p
 
if .%proc% equ .0 goto scenariy1
goto scenariy2
 
:scenariy1 start 1.txt
 
:scenariy2 start 2.txt
------------------------------
set /a proc = 0
 
for /f %%p in ('"tasklist /nh 2>nul |find /c "notepad.exe""') do set /a proc += %%p
for /f %%p in ('"tasklist /nh 2>nul |find /c "notepad.exe""') do set /a proc += %%p
for /f %%p in ('"tasklist /nh 2>nul |find /c "notepad.exe""') do set /a proc += %%p
 
if .%proc% equ .0 goto :scenariy1
goto :scenariy2
 
:scenariy1 start 1.txt
 
:scenariy2 start 2.txt
========================================================
ни даже так..
-----------------
set /a proc = 0
 
for /f %%p in ('"tasklist /nh 2>nul |find /c "notepad.exe""') do set /a proc += %%p
for /f %%p in ('"tasklist /nh 2>nul |find /c "notepad.exe""') do set /a proc += %%p
for /f %%p in ('"tasklist /nh 2>nul |find /c "notepad.exe""') do set /a proc += %%p
 
if .%proc% equ .0 goto :start 1.txt
goto :start 2.txt
--------------------------------------------
set /a proc = 0
 
for /f %%p in ('"tasklist /nh 2>nul |find /c "notepad.exe""') do set /a proc += %%p
for /f %%p in ('"tasklist /nh 2>nul |find /c "notepad.exe""') do set /a proc += %%p
for /f %%p in ('"tasklist /nh 2>nul |find /c "notepad.exe""') do set /a proc += %%p
 
if .%proc% equ .0 goto start 1.txt
goto start 2.txt
------------------------
PS может где то ошибка..

Всего записей: 22 | Зарегистр. 09-05-2007 | Отправлено: 10:50 30-03-2017
thejustsoul



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

Цитата:
......
if .%proc% equ .0 goto сценарий_2  
goto сценарий_1  

 

Цитата:
:сценарий_2
команда
команда
 
:сценарий_1
команда
команда

 
все на латинице, выше только для примера.
з.ы. код не проверял на работоспособность, проверьте сами.

Всего записей: 1782 | Зарегистр. 30-03-2014 | Отправлено: 11:13 30-03-2017 | Исправлено: thejustsoul, 11:37 30-03-2017
sniffspb



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

Цитата:
:сценарий_2  
команда  
команда  
 
:сценарий_1  
команда  
команда

 
Огромное спасибо B3T6 и Вам за то что носом ткнули,сорри ночь не спал.
Подредактировал еще немного - работает отлично.  
Спасибо!

Всего записей: 22 | Зарегистр. 09-05-2007 | Отправлено: 13:12 30-03-2017 | Исправлено: sniffspb, 13:19 30-03-2017
VVL99

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

Код:
 
@echo off
:S
set /a nt+=1
tasklist | find /i "%nt%.exe" && start 1.txt || if %nt% LSS 3 goto S
 

 

Код:
 
@echo off
:S
set /a nt+=1
if %nt% GTR 3 goto sc2
tasklist | find /i "%nt%.exe" && goto sc1 || goto S
:sc1
echo sc1
pause
exit
:sc2
echo sc2
pause
exit
 


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

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 14:09 30-03-2017 | Исправлено: VVL99, 14:14 30-03-2017
YuS_2



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

Цитата:
Для разнообразия  

В принципе, лучше упростить до:

Код:
@echo off
tasklist|>nul findstr /ir "\<1\.exe\> \<2\.exe\> \<3\.exe\>"&&goto sc1||goto sc2
goto end
 
:sc1
echo one
goto end
 
:sc2
echo two
 
:end
pause

Всего записей: 3194 | Зарегистр. 03-02-2009 | Отправлено: 14:31 30-03-2017
VVL99

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Конечно, процессы 1 ,2, 3 это вымышленные переменные (подразумевались настоящие имена) и сами примеры пойдут только для понимания, так что и ваш пример тоже полезен и интересен.

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

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 15:50 30-03-2017
YuS_2



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

Цитата:
подразумевались настоящие имена

Да, в варианте с findstr, настоящие имена легко заменят вымышленные... да и вообще, findstr, по сути, более продвинутый find.

Всего записей: 3194 | Зарегистр. 03-02-2009 | Отправлено: 17:07 30-03-2017
VVL99

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2 - пост
Цитата:
 да и вообще, findstr, по сути, более продвинутый find.

Да мне этот вариант тоже больше нравится, что бы не повторять код поиска, а просто перечислить процессы.
Вот тоже самое но без вывода информации и с конкретным сценарием.

Код:
 
tasklist | findstr /i "1.exe 2.exe 3.exe" && goto sc1 || goto sc2
:sc1
start 1.txt
exit
:sc2
start 2.txt
 

 
Добавлено:
YuS_2 - пост
Цитата:
настоящие имена легко заменят вымышленные...

Я имел ввиду свой пример, у меня имена 1,2,3 собственно только для примера, в вашем уже рабочий вариант.

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

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 17:11 30-03-2017
YuS_2



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

Цитата:
Вот тоже самое но без вывода информации и с конкретным сценарием.

Не совсем...
1. Тут как раз будет вывод результата из команды findstr
2. У меня там не зря регэкспы включены были. В Вашем варианте будет найдено и 111.exe, и 22.exe, и т.д., в моем - не будет.

Всего записей: 3194 | Зарегистр. 03-02-2009 | Отправлено: 18:33 30-03-2017
VVL99

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

Код:
tasklist | findstr /i "a.exe"

1a.exe, aa.exe, abba.exe
надо будет точнее указывать имя процесса, ну или регэксп, что точнее.
 
 
Добавлено:
Ну и такой вариант  

Код:
tasklist | findstr /i "%*.exe"

тоже полезен в данном случае для рассмотрения.

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

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 18:52 30-03-2017 | Исправлено: VVL99, 19:00 30-03-2017
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VVL99
Мало того, у findstr есть багофича... у него регэкспы (ну, как регэкспы - скорее их жалкое подобие, но уж что есть) работают даже без ключа "/r", поэтому с таким ключом:

Цитата:

Код:
tasklist | findstr /i "a.exe"

всё равно, будут найдены даже abexe и a2exe и т.д., т.е. точка работает как любой символ...

Всего записей: 3194 | Зарегистр. 03-02-2009 | Отправлено: 18:59 30-03-2017
VVL99

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2 - пост
Цитата:
будут найдены даже abexe и a2exe

Нее, не должно, только правильная последовательность символов.

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

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 19:03 30-03-2017
   

Страницы: 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 » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Maz (19-09-2020 13:36): Командная строка, батники, сценарии (bat, cmd) Часть 6


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru