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

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

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

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

Цитата:
Или, как вариант, который бы сворачивал все окна (примерная имитация WIN+D).

не bat правда, зато без сторонних утилит.
zzz.vbs:

Код:
Set objshell = CreateObject("shell.application")
objshell.MinimizeAll
Set objshell = Nothing

Если надо из bat запускать, то можно так:

Код:
start "" cscript.exe //nologo zzz.vbs

 
Добавлено:
Smitis опередил.

Всего записей: 757 | Зарегистр. 07-01-2009 | Отправлено: 11:23 02-08-2018 | Исправлено: Sinclair83, 11:24 02-08-2018
Smitis



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

Цитата:
Если надо из bat запускать, то можно так:  

или так

Код:
@if (true == false) @end /*
@echo off
%SystemRoot%\System32\cscript.exe //nologo //e:javascript "%~f0" %*
goto:eof */
 
(new ActiveXObject("Shell.Application")).MinimizeAll();



----------
Разум когда-нибудь победит

Всего записей: 3179 | Зарегистр. 09-02-2003 | Отправлено: 11:31 02-08-2018
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis
Sinclair83
Со второй частью понятно... а отдельные окна:

Цитата:
возможно ли написать батник, который бы сворачивал определённые окна?

тоже ведь человек хотел...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 11:45 02-08-2018
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
YuS_2
Тут надо в сторону WMI смотреть.
Или на PS переползать.


----------
Разум когда-нибудь победит

Всего записей: 3179 | Зарегистр. 09-02-2003 | Отправлено: 12:05 02-08-2018
Sinclair83

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

Цитата:
а отдельные окна

наверное так можно (правда не по хэндлу):

Код:
Set WshShell = WScript.CreateObject("WScript.Shell")
If WshShell.AppActivate("ESET NOD32 Antivirus") Then
  wScript.sleep 100
  WshShell.SendKeys "% n{DOWN 3}{ENTER}"
End If

 
 
Добавлено:
 
Или... раз уж тут Smitis про WMI заговорил...
то так:

Код:
Option Explicit
Dim objWMIService, objProcess, colProcess
Dim strComputer, strProcessKill
strComputer = "."
strProcessKill = "'calc.exe'"
 
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
 
Set colProcess = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = " & strProcessKill )
For Each objProcess in colProcess
objProcess.Terminate()
Next
WScript.Quit

можно скопом прибить все открытые калькуляторы.

Всего записей: 757 | Зарегистр. 07-01-2009 | Отправлено: 13:17 02-08-2018 | Исправлено: Sinclair83, 13:40 02-08-2018
YuS_2



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

Цитата:
можно скопом прибить все открытые калькуляторы.  

Вопрос в том, что прибить не все скопом надо, а один из... например, по координатам окна...
 
Smitis
В общем, судя по всему, это, как раз, тот случай, когда проще воспользоваться внешней утилиткой, которая умеет и заголовки, и идентификаторы дергать, и хэндлы, и координаты окна даже, и многое другое... причем ни vsh, ни wmi, ни ps для этого не использует...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 14:22 02-08-2018 | Исправлено: YuS_2, 14:27 02-08-2018
Sinclair83

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

Цитата:
например, по координатам окна...  

не увидел, что Cmdow такое умеет. может плохо смотрел(3-ю группу запуска). или описание безнадёжно устарело.

Всего записей: 757 | Зарегистр. 07-01-2009 | Отправлено: 14:43 02-08-2018
YuS_2



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

Цитата:
не увидел, что Cmdow такое умеет


Код:
/P - отображение размеров окон и их координат на рабочем столе

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 15:35 02-08-2018
Sinclair83

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
то есть, чтобы закрыть одно 'несчастное' окошко по координатам предлагаете целых два! раза запускать утилиту? (1й - собственно создание списка, 2й - действие над окном). Помимо этого нужно будет ещё(логику придумать) построчно читать этот список батником и сравнивать его с переданным батнику параметром. Слишком витиевато для такой задачи, imho.

Всего записей: 757 | Зарегистр. 07-01-2009 | Отправлено: 15:57 02-08-2018
YuS_2



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

Цитата:
Слишком витиевато для такой задачи

Ну, тогда покажите код из однократного запуска чего-либо, но в одну строку, а не запуск дополнительного кода wsh посредством wmi (зачем кстати? wmiс прекрасно работает напрямую из батника), для закрытия/сворачивания окна, причем определенного окна из набора идентичных, например, cmd.exe.
Это же батники, в них без витиеватости не обойтись, однако...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 17:15 02-08-2018
boss911



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

Код:
ADB devices | FINDSTR /C:"XXXXXXXXXXXXXXXX    device" >nul && ECHO OK

где X... - слово состоящее строго из букв и цифр (вперемешку) и состоит строго из 16-ти символов. Между "X..." и "device" одна табуляция. Нужно "X..." прописать как регулярное выражение, согласно моему правилу. Спасибо.

Всего записей: 3688 | Зарегистр. 29-01-2005 | Отправлено: 18:10 06-08-2018 | Исправлено: boss911, 20:48 06-08-2018
YuS_2



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

Цитата:
с регулярными выражениями.

Это не регулярные выражения, а порезанная хрень со смехом ... такшта то, что хочется, не получится.
Можно, конечно, классами обойти, типа:
[a-z0-9][a-z0-9][a-z0-9]...
их придется втуливать 16 штук, но с кириллицей могут возникнуть проблемы (придется весь алфавит вписывать в класс)... и табуляцию метасимволом не напишешь, только сам символ придется вписывать (форум, кстати, его почикает на пробелы)...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 08:54 07-08-2018 | Исправлено: YuS_2, 09:06 07-08-2018
boss911



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
 
Ясно. Тогда придется упростить задачу. Слово "X..." состоит без пробелов, из латинских букв и цифр. Кириллицы там точно не будет, как и спецсимволов.

Код:
ADB devices | FINDSTR /IRC:"[a-z0-9]    device" >nul && ECHO OK

- работает, табуляцию между "[a-z0-9]    device" воспринимает. Спасибо.

Всего записей: 3688 | Зарегистр. 29-01-2005 | Отправлено: 18:33 07-08-2018 | Исправлено: boss911, 18:35 07-08-2018
wadimuss

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
boss911
получается, у тебя твой поиск нашел последний символ (в диапазоне 0-9a-z) из твоего слова Х... и далее табуляция и слово device

Всего записей: 1029 | Зарегистр. 24-11-2008 | Отправлено: 19:07 07-08-2018
YuS_2



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

Цитата:
- работает

а чтобы однозначно идентифицировалось слово строго из 16 символов, а не 16 символов в любом слове, надо в начале и в конце шаблона классов установить спецсимволы позиций \< и \>, соответственно...

Код:
"\<[a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9]\>    device"

 
Добавлено:
wadimuss

Цитата:
нашел последний символ (в диапазоне 0-9a-z) из твоего слова Х... и далее табуляция и слово device

да-да, именно так, тот шаблон неверный по условию...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 19:13 07-08-2018 | Исправлено: YuS_2, 19:18 07-08-2018
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
boss911
Достаточно всего лишь поискать device в конце
Цитата:
adb devices|findstr /e /i /l "device"

Всего записей: 12375 | Зарегистр. 11-03-2002 | Отправлено: 19:20 07-08-2018 | Исправлено: Pasha_ZZZ, 19:20 07-08-2018
boss911



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мне надо найти слово без пробелов, вначале строки, из латинских букв и цифр. Фиг с теми 16-ти знаками, так будет уневерсальнее. Реально?

Код:
X...    device

Добавлено:
Pasha_ZZZ

Цитата:
Достаточно всего лишь поискать device в конце

Надежность снижается.

Всего записей: 3688 | Зарегистр. 29-01-2005 | Отправлено: 19:24 07-08-2018 | Исправлено: boss911, 19:31 07-08-2018
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
boss911
Какая еще надежность? Больше в указанной команде в конце нет device в выводе.

Всего записей: 12375 | Зарегистр. 11-03-2002 | Отправлено: 19:30 07-08-2018
wadimuss

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
boss911
повторяй шаблон 16-ть раз: [a-z0-9]
если важно отсутствие пробела, то так: [^ ]
не нужна точка: [^.]
 

Всего записей: 1029 | Зарегистр. 24-11-2008 | Отправлено: 19:37 07-08-2018
YuS_2



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

Цитата:
надо найти слово без пробелов, вначале строки, из латинских букв и цифр


Код:
findstr /ibrc:"[a-z0-9][a-z0-9]*    device"

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 07:23 08-08-2018
   

Страницы: 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.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru