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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

Открыть новую тему     Написать ответ в эту тему

Maz



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

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ 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. Справочник администратора
 
· Выполнение BAT-скриптов без вызова окна консоли
· cmdow - изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· blat - отправка почты из консоли
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)(3)
 
· Архив всевозможных версий cmd.exe (от Windows NT 3.10 до Windows 11 +Win95cmd +ReactOS) и command.com (DOS 5.0 и выше). Старые командные процессоры можно запускать на более новых ОС, хотя не всё может работать корректно. Подробная документация по командам cmd.exe и стандартным утилитам ОС для NT 3.51, NT 5.0 (Windows 2000) и NT 5.2 (Windows Server 2003). Сборник представляет исторический интерес, а также незаменим для тех, у кого появилось желание сделать свои скрипты работоспобными не только на своей версии ОС.
 
· Большой сборник одним архивом: Сотни Win32 утилит командной строки, нетривиальные .cmd файлы, .bat miniperl скрипты (не требующие полноценной установки Perl), FAR Manager с плагинами и настройками, разное для DOS/DOSBox (откуда под Win32 интерес представляют три продвинутых "мультисистемных" .bat файла да ещё, может быть, оболочка Necromancer DOS Navigator с поддержкой LFN и доступом к буферу обмена Windows). Краткие описания всего - в файликах files.bbs

Всего записей: 39692 | Зарегистр. 26-02-2002 | Отправлено: 22:41 20-06-2024 | Исправлено: Maz, 21:52 28-09-2024
DeZz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
virjokk
сейчас GCRaistlin не про имена файлов говорит

Всего записей: 1387 | Зарегистр. 23-01-2006 | Отправлено: 11:51 04-07-2025
zloybuka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DeZz
он имеет ввиду, что если в конструкте for %%i in (%var%) переменная %var% содержит знаки подстановки (*, ?) или скобку ), то отработка будет не такой, как ожидается.

Всего записей: 440 | Зарегистр. 30-05-2008 | Отправлено: 12:09 04-07-2025
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DeZz
? и ) можно заменить на подстановочные знаки, но с * иначе как с помощью SHIFT+GOTO не справиться.

----------
Magically yours
Raistlin

Всего записей: 4423 | Зарегистр. 18-04-2005 | Отправлено: 14:10 04-07-2025
DeZz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zloybuka
GCRaistlin
я не понимаю о чем вообще идет речь
про имена файлов все таки? ну так с ")" все работает а *, ? запрещены в именах  
 
поэтому и спросил пример

Всего записей: 1387 | Зарегистр. 23-01-2006 | Отправлено: 14:42 04-07-2025
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DeZz
Создайте в каталоге с батником два файла - 1 и 2. Затем выполняйте:

Код:
send2ffmpeg.bat )
send2ffmpeg.bat ?
send2ffmpeg.bat *


----------
Magically yours
Raistlin

Всего записей: 4423 | Зарегистр. 18-04-2005 | Отправлено: 14:53 04-07-2025
DeZz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
да, ясно теперь.
 
скажем так, интересно было бы послушать людей разбирающихся в командах FFmpeg, т.е. обсудить непосредственное применение, а не некий крайне частный случай обработки ошибок.
 
и тем не менее спасибо. забавное поведение.

Всего записей: 1387 | Зарегистр. 23-01-2006 | Отправлено: 19:23 04-07-2025
Wu Tang



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

Код:
start "" /b /w Reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" /v "WDD_RunOnce" /t REG_SZ /d "PowerRun.exe /SW:0 /SYS \"%SystemDrive%\Windows\Setup\Scripts\Windows_Defender_disable.cmd\"" /f
 
 
и здесь:
 
https://i.ibb.co/rC5VCjw/2025-07-11-02-02-46.png

----------
Всему свое время и каждому свой час!
Хочешь жить - умей вертеться!

Всего записей: 4260 | Зарегистр. 15-10-2007 | Отправлено: 02:29 11-07-2025 | Исправлено: Wu Tang, 02:36 11-07-2025
Raf_SE



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я через .bat запускаю свою консольную программу, в которой есть поддержка кликабельности URL через управляющие ANSI-символы \u001B]8;;

Код:
\u001B]8;;{url}\a{caption}\u001B]8;;\a

Согласно правилам, в не поддерживающих управляющие символы терминалах, они просто не должны отображаться. И когда запускаю консольную программу через IDE, то действительно, не отображаются. Но когда запускаю через .bat - отображаются.
Можно ли это как-то обойти?
 
upd    
Нашёл решение. Нужно в самой консольной программе вызывать SetConsoleMode и передавать ему ENABLE_VIRTUAL_TERMINAL_PROCESSING | ENABLE_PROCESSED_OUTPUT.
Впрочем, если есть другие решения - всё ещё интересно.

----------
«Геополитика – это лжетеория, ведущая к оправданию завоеваний и войны» (с) Нюрнбергский трибунал

Всего записей: 1174 | Зарегистр. 06-08-2006 | Отправлено: 15:54 18-07-2025 | Исправлено: Raf_SE, 18:37 18-07-2025
dakke



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет знатокам -)   Друзья, подскажите, пожалуйста, следующее:
 
В пакете 1С-ных утилит есть такие известные программы:
- ras.exe (утилита администрирования кластера серверов 1С)
- rac.exe (это утилита, которая посылает в работающий процесс ras.exe  команды управления базами, серверами ит.п.(
 
Т.е. типа запускаешь процесс ras.exe  и потом уже програмой rac.exe с соответствующими параметрами  и опциями можешь посылать этому процессу всякие команды.
 
При этом, когда в CMD вызываешь команду
ras.exe claster
то появляется строка
1C:Enterprise 8.3 (x86-64)  (8.3.25.1501) Remote Administration Server started.
Ctrl+C to exit.
 
и окно CMD блокируется для дальнейших команд, пока не введешь Ctrl+C.
(в диспетчере задачи видно, что есть процесс ras.exe)
 
Соответственно, нужно запускать второе окно CMD и в тем уже выполнять команды rac.exe.
А потом, когда все сделал, закрываешь (exit) окно,  возвращаться в первоначальное окно, вводишь Ctrl+C , процесс ras.exe закачивается и можно делать exit в этом окне.
 
Это если все руками.  А если bat-файл нужно написать?    
Ну, понятно, что запускаю я ras.exe в отдельном окне (назовем его "окно-2"):
START ras.exe cluster
и дальше в том же бат-файле уже делаю свои дела - посылаю процессу ras.exe команды rac.exe <опции>.
И вот вопрос:  а как потом, когда все свои задачи выполню, закрыть это "окно-2", вернее, даже не заркыть, а:
 
как в bat-файле сначала послать в "другое" окно CMD команду Ctrl+C, чтобы процесс ras.exe завершился, а потом уже послать в это окно команду exit ??
 
Заранее спасибо за подсказку, в каком направлении искать -)  
 
 

Всего записей: 170 | Зарегистр. 04-05-2014 | Отправлено: 19:08 20-07-2025 | Исправлено: dakke, 19:10 20-07-2025
Inoz2000



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TASKKILL /F /IM ras.exe
 
Добавлено:
хотя возможно лучше без /F

Всего записей: 5502 | Зарегистр. 23-04-2009 | Отправлено: 19:23 20-07-2025
boss911



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подробнее...
Есть способ, в данном случае, использовать один FOR? Тогда мой батник порядком похудеет и его станет легче править, чего и добиваюсь. Суть в том, что, если %RegValueName% не содержит пробелы, то Tokens=2, если с пробелом - Tokens=3. Пока что на ум приходит способ, где всегда Tokens=2 и потом вычещать переменную:

Код:
FOR /F "Tokens=2*" %%I IN ('REG QUERY "%ShellFolders%" /V "%RegValueName%" 2^>nul') DO SET sPATH=%%J
ECHO %sPATH:REG_SZ    =%

Но как-то не надежно. Например, захочет завтра индуc из Microsoft добавить еще один пробел и все сломается, тем более я сейчас под Win7 и не представляю себе, какой там выхлоп у Win8-11. Или сойдет?

Всего записей: 3785 | Зарегистр. 29-01-2005 | Отправлено: 18:40 25-07-2025
DeZz



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

Цитата:
 Например, захочет завтра индуc из Microsoft добавить еще один пробел и все сломается, тем более я сейчас под Win7 и не представляю себе, какой там выхлоп у Win8-11

 
...в безумных вопросах, безумных идей, я чувствую дыхание рагнарёка (с)
 
 

Всего записей: 1387 | Зарегистр. 23-01-2006 | Отправлено: 19:34 25-07-2025 | Исправлено: DeZz, 19:35 25-07-2025
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
boss911
FYI: reg.exe для WinXP и для Win2k используют в качестве разделителя табуляцию.

----------
Magically yours
Raistlin

Всего записей: 4423 | Зарегистр. 18-04-2005 | Отправлено: 21:53 25-07-2025
yurkesha



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
boss911
Цитата:
Тогда мой батник порядком похудеет
Могу предложить в качестве объекта СУЩЕСТВЕННОЕ усложнение батника, но править станет легче - структура потому что...
Ну и в целом - работоспособность с WinXP до Win10 включительно(в частности именно FINDSTR обеспечивает независимость от разницы "выхлопа"), умение считывать любые параметры из любых разделов...
Скрипт
 

Всего записей: 2783 | Зарегистр. 15-12-2003 | Отправлено: 13:20 26-07-2025
GCRaistlin



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

----------
Magically yours
Raistlin

Всего записей: 4423 | Зарегистр. 18-04-2005 | Отправлено: 13:36 26-07-2025
yurkesha



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
Цитата:
Вы сильно преувеличиваете универсальность своего решения.
Один из самых универсальных публичных вариантов реализации чтения из реестра - так устраивает?
А вопросы связанные с безопасностью я изначально не планировал решать - это уже совершенно другого класса задача
Также предлагаю выложить более универсальный вариант в публичной сфере
С удовольствием воспользуюсь результатом чужого труда
 
 
Добавлено:
Ну и если требуется точность - отлаживалось и проверялось на таких системах

Всего записей: 2783 | Зарегистр. 15-12-2003 | Отправлено: 14:38 26-07-2025
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yurkesha
Попробуйте считать своим решением параметр, значение которого содержит окавыченный амперсанд ("&").

----------
Magically yours
Raistlin

Всего записей: 4423 | Зарегистр. 18-04-2005 | Отправлено: 15:01 26-07-2025
yurkesha



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
Цитата:
окавыченный амперсанд
На это я точно не закладывался(на момент написания такой задачи не было у меня, сейчас впрочем тоже нет)...
Изначально все писалось для WinXP, но писалось на Win7 x64... А потом перепроверялось на том что было под рукой
Для более универсальных решений я поэтому и предложил
Цитата:
Также предлагаю выложить более универсальный вариант в публичной сфере

 
 
 
Добавлено:
А самому мне уже слабо поправить код который последний раз правился: "2 марта 2013 г., 17:37:33"  

Всего записей: 2783 | Зарегистр. 15-12-2003 | Отправлено: 15:15 26-07-2025 | Исправлено: yurkesha, 15:32 26-07-2025
boss911



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо за отклики. Задал свой вопрос AI Gemini (2.5 Pro), как ни странно, получил ответ близок к своему, что сначала копируем всю строку, потом вычищаем лишнее в переменной, как я и предложил выше, только чуть иначе.
 
Подробнее...
 
Второй FOR для совместимости с XP и с заделом на будущее, если вдруг (маловероятно) добавят/уберут пробел или заменят на табуляцию. Поскольку мои минимальные требования Win7, то во втором FOR нет нужды, 4 пробела можно сразу очистить в SET после "REG_SZ". 4 пробела, вместо одной табуляции в XP, появилось в Vista и сейчас продолжаются в Win11, большая вероятность, что так продолжится и далее. Данное решение считаю для себя более чем универсальным, проверил на Win7x86 и Server 2025, мне подходит, что касается амперсанда ("&"), то в значениях %RegValueName% для "Shell Folders" его нет со времен XP, а если когда-то и понадобиться считать неудобные символы для CMD, это будет уже другая история. Тут мой вопрос закрыт, возможно еще пообщаюсь с AI, если чего интересного подкинет, напишу.
 
Вопрос. Я понимаю, что фильтровать строки, это правильно, особенно, когда их много, но стоит ли оно скорости работы скрипта, когда у нас всего 2 строки выхлопа? Как по мне, на запуск/отработку FIND/FINDSTR уходит больше ресурсов, чем дать FOR вхолостую отработать 1 лишнюю строку для SET. Тут спорить ни с кем не буду, просто хотелось бы услышать мнение здешних. Если совместимость с XP не нужна, то вообще можно применить Skip=2. Спасибо.

Всего записей: 3785 | Зарегистр. 29-01-2005 | Отправлено: 17:40 26-07-2025 | Исправлено: boss911, 17:45 26-07-2025
GCRaistlin



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

Цитата:
4 пробела, вместо одной табуляции в XP, появилось в Vista

В Win2k3.
 

Цитата:
на запуск/отработку FIND/FINDSTR уходит больше ресурсов, чем дать FOR вхолостую отработать 1 лишнюю строку для SET.

Это так.
Кстати говоря, сет FOR в виде команды тоже потребляет ресурсы, т. к. требует запуска еще одного экземпляра cmd.exe. Быстрее перенаправить вывод в файл и подсунуть затем его FOR'у.

----------
Magically yours
Raistlin

Всего записей: 4423 | Зарегистр. 18-04-2005 | Отправлено: 18:01 26-07-2025
Открыть новую тему     Написать ответ в эту тему

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

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии: bat, cmd


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru