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

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

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

Maz



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

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

Всего записей: 38098 | Зарегистр. 26-02-2002 | Отправлено: 13:35 19-09-2020 | Исправлено: metatrop, 07:55 29-11-2022
kot1313



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

Цитата:
P.S. Проще руками выставить...  

 
А я лёгких путей не исчу
 
За подробный путеводитель по минному полю
!!! ОГРОМНОЕ СПАСИБО !!!
 

Всего записей: 2522 | Зарегистр. 11-12-2002 | Отправлено: 06:14 07-10-2022 | Исправлено: kot1313, 06:15 07-10-2022
A27

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как делать замену через set str=%str:abc=def% по маске? То есть используя символы "?" и "*". Давно очень делал и забыл как.

Всего записей: 59 | Зарегистр. 30-03-2017 | Отправлено: 07:57 15-10-2022
Aleksoid1978



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет.
Подскажите - можно ли строковый параметр "разбить" на несколько строк в батнике ?
Вот к примеру как это в линуксе или том же баше:

Код:
 
ffmpeg \
-filter_complex "param1; \
param2; \
param3; \
last_param"
 

 
В винде саму строку вызова можно переносить с помощью ^, но вот строковый параметр(в случае примера то что в кавычках) не получается.
 
Как пример что нужно:

Код:
 
set "params=params1; ^
      param2; ^
      last_param;"
 


----------
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Всего записей: 8850 | Зарегистр. 11-05-2006 | Отправлено: 04:23 18-10-2022 | Исправлено: Aleksoid1978, 04:31 18-10-2022
GCRaistlin



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

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

Всего записей: 3550 | Зарегистр. 18-04-2005 | Отправлено: 10:21 18-10-2022
ewild

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

Цитата:
в случае примера то что в кавычках) не получается

 
Aleksoid1978
 
Без кавычек работает так:

Код:
@echo off
set params=param1;^
 param2;^
 last_param;
echo %params%
for %%p in (%params%) do echo %%p

 
С кавычками должно работать так:

Код:
@echo off
set ^"params=param1;^
 param2;^
 last_param;^"
echo %params%
for %%p in (%params%) do echo %%p

Всего записей: 1119 | Зарегистр. 13-08-2005 | Отправлено: 10:51 18-10-2022 | Исправлено: ewild, 11:52 18-10-2022
Aleksoid1978



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

Цитата:
С кавычками должно работать так:  

Отлично - спс.

----------
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Всего записей: 8850 | Зарегистр. 11-05-2006 | Отправлено: 11:37 18-10-2022
ewild

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

Цитата:
Отлично - спс.

 
Aleksoid1978
 
Не уверен что отлично, так как кавычки на выходе пропадают.
 
Если -filter_complex требуются именно кавачки для группы params, то на входе проще обойтись без кавычек, а вместо этого применить их на выходе:
 

Код:
@echo off
set params=^
param1;^
 param2;^
 param3;^
 last_param;
echo ffmpeg -filter_complex "%params%" etc
 
:: или, если уж на то пошло:  
 
set ^"params_v2=^
param1_v2;^
 param2_v2;^
 param3_v2;^
 last_param_v2;^"
echo ffmpeg -filter_complex "%params_v2%" etc

 
 
 
 

Всего записей: 1119 | Зарегистр. 13-08-2005 | Отправлено: 12:19 18-10-2022
GCRaistlin



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

Цитата:
кавычки на выходе пропадают

Никто не запрещает эскейпировать сами кавычки:

Код:
 
set params=^"params1; ^
      param2; ^
      last_param;^"
 

Только нужно помнить, что спецсимволы внутри присваиваемого значения тоже нужно при этом эскейпировать.

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

Всего записей: 3550 | Зарегистр. 18-04-2005 | Отправлено: 12:24 18-10-2022
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Делал как советует PowerShell:
       Update-Help
       get-help Remove-AppxPackage -examples
       get-help Move-AppxPackage -examples
 
Хотел удалить MicrosoftEdge -  выдает ошибку.
PS X:\Windows\system32> Remove-AppxPackage -Package  Microsoft.MicrosoftEdge
 
Хотел пакет из одной системы перенести в другой - опять ошибка
PS X:\Windows\system32>Move-AppxPackage -Package "Microsoft.WindowsCamera" -Volume B:\
 
В чем проблема и можно ли и как перенести  приложение из одной системы в другую?
 
Удачи.

----------
Везде трудно первые 15 лет, потом легче.
Все проблемы имеют ПРОСТОЕ решение
Ты начальник я дурак я начальник ты дурак. Но хуже дурака дурак с инициативой.

Всего записей: 1411 | Зарегистр. 04-09-2015 | Отправлено: 11:21 20-10-2022 | Исправлено: alex52mail, 11:27 20-10-2022
ipmanyak



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alex52mail Здесь сценарии - bat, cmd .  Для поша, vbs и др. другая ветка -  Сценарии для Windows ( 1 2 3 4 5 ... 207 208 209 210 211 )


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

Всего записей: 11293 | Зарегистр. 10-12-2003 | Отправлено: 12:24 20-10-2022 | Исправлено: ipmanyak, 12:28 20-10-2022
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как можно распарсить с помощью findstr строку подключения следующего вида
 
Provider=SQLOLEDB.1;Initial Catalog=DBNAME;Data Source=192.168.88.1\INSTANCE
 
Мне надо вытащить IP-адрес (или имя хоста), то есть строку между "Data Source=" и "\INSTANCE"
 
GCRaistlin
Спасибо за быстрый и точный ответ ! Встроенный командный процессор это хорошо

Всего записей: 4670 | Зарегистр. 05-01-2006 | Отправлено: 12:37 20-10-2022 | Исправлено: mithridat1, 12:53 20-10-2022
GCRaistlin



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

Код:
 
for /f "delims==\ tokens=4" %%A in ("Provider=SQLOLEDB.1;Initial Catalog=DBNAME;Data Source=10.11.13.2\INSTANCE") do echo %%A
 


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

Всего записей: 3550 | Зарегистр. 18-04-2005 | Отправлено: 12:42 20-10-2022
ewild

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

Код:
Provider=SQLOLEDB.1;Initial Catalog=DBNAME;Data Source=192.168.88.1\INSTANCE
Provider=SQLOLEDB.1;Initial Catalog=DBNAME;Data Source=192.168.88.2\INSTANCE
Provider=SQLOLEDB.1;Initial Catalog=DBNAME;Data Source=192.168.88.3\INSTANCE

 
test.cmd:

Код:
@echo off
for /f "tokens=6 delims==;\" %%i in ('find "Data Source=" test.txt') do echo %%i

 
output:

Код:
192.168.88.1
192.168.88.2
192.168.88.3

Всего записей: 1119 | Зарегистр. 13-08-2005 | Отправлено: 12:54 20-10-2022 | Исправлено: ewild, 13:01 20-10-2022
rv1988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!
В этом деле не силён, поэтому решил обратиться за помощью в соответствующую ветку.
 
Стоит задача определения редакции продукта в реестре, далее выполняется какое либо действие.

Код:
@ECHO OFF
chcp 866
@cls
for /f tokens^=3-6 %%a in ('REG QUERY "HKLM\SOFTWARE\WOW6432Node\KasperskyLab\AVP21.8\environment" /v ProductName') do (
if "%%a"=="Kaspersky Small Office Security" (echo !!!ОБНАРУЖЕНО!!!
pause) else (echo Поодерживаемый продукт не найден
pause)
)

 
Продукт установлен, но батник его не видит потому что дальше текста Kaspersky после пробела не читает,  Если поставить:

Код:
@ECHO OFF
chcp 866
@cls
for /f tokens^=3-6 %%a in ('REG QUERY "HKLM\SOFTWARE\WOW6432Node\KasperskyLab\AVP21.8\environment" /v ProductName') do (
if "%%a"=="Kaspersky" (echo !!!ОБНАРУЖЕНО!!!
pause) else (echo Поодерживаемый продукт не найден
pause)
)

Тогда выдаёт нужный результат, но нужно чтобы батник видел всё - дальше пробела Small Office Security
 
Вы можете проверить не имея антивируса таким способом:

Код:
@ECHO OFF
chcp 866
@cls
for /f tokens^=3-5 %%a in ('REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName') do (
if "%%a"=="Windows 10 Enterprise" (echo !!!ОБНАРУЖЕНО!!!
pause) else (echo Поодерживаемый продукт не найден
pause)
)

подставить вместо "Windows 10 Enterprise", Вашу ОС и запустить батник, результат будет таким же, если же оставить только "Windows", тогда будет обнаружено, но не то что мы хотели.

Всего записей: 981 | Зарегистр. 01-04-2013 | Отправлено: 06:53 22-10-2022 | Исправлено: rv1988, 06:56 22-10-2022
ipmanyak



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

Код:
 
@ECHO oFF                                                                                                                
for /f "skip=2 tokens=1,2*" %%a in ('REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName') do (  
 if "%%c"=="Windows 7 Ultimate" (                                                                                        
  echo !!!FIND!!!                                                                                                        
  pause                                                                                                                  
  ) else (                                                                                                                
  echo NOT FIND                                                                                                          
  pause)                                                                                                                  
)                                                                                                                        
 



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

Всего записей: 11293 | Зарегистр. 10-12-2003 | Отправлено: 07:24 22-10-2022
rv1988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ipmanyak
Находит по Винде, благодарю!
 
А вот по этому не находит:

Код:
@ECHO oFF                                                                                                                
for /f "skip=2 tokens=1,2*" %%a in ('REG QUERY "HKLM\SOFTWARE\WOW6432Node\KasperskyLab\AVP21.8\environment" /v ProductName') do (  
 if "%%d"=="Kaspersky Small Office Security" (                                                                                        
  echo !!!FIND!!!                                                                                                        
  pause                                                                                                                  
  ) else (                                                                                                                
  echo NOT FIND                                                                                                          
  pause)                                                                                                                  
)      

Не могли бы отправить верное решение?
 
Тогда до меня дойдёт по всем этим skip, tokens и %%a

 
P.S. я убил вчера день на это  
Когда я его открыл обычным блокнотом, то увидел скрытые символы Kaspersky SmallяOfficeяSecurity
Всем спасибо!

Всего записей: 981 | Зарегистр. 01-04-2013 | Отправлено: 07:37 22-10-2022 | Исправлено: rv1988, 08:24 22-10-2022
Chekushka05

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может кто сможет помоч с таким вопросом. http://forum.ru-board.com/topic.cgi?forum=5&topic=49010&start=1500#19
 
нужно чтоб он совсем не запускался при загрузке винды. Нужна возможность самому включать и отключать автостарт.
 
Самозащиту отключал, галку снимал, запрещал прогами, при запуске службы стартует и гуй. Если отключить автостарт службы, то при однократном её запуске снова всё прописывается в автозапуск. Практически во всех антивирях и фаерволах есть галка, а тут без выбора. Может какой батник нужно.
не спрашивайте зачем, нужно.

Всего записей: 54 | Зарегистр. 31-03-2022 | Отправлено: 16:02 23-10-2022 | Исправлено: Chekushka05, 16:07 23-10-2022
insorg



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Други, нужна помощь.
Есть вот такое:
Цитата:
@powershell -Command " (Invoke-RestMethod -Method 'Post' -Uri 'https://msedge.api.cdp.microsoft.com/api/v1.1/internal/contents/Browser/namespaces/Default/names/msedge-stable-win-x64/versions/106.0.1370.52/files?action=GenerateDownloadInfo&foregroundPriority=true')[0].Url "
 
На выходе получаю значение поля URL из возвращаемой на такой запрос jsonки.
Но! Проблема в том, что нужно получить не просто первую попавшуюся строку с названием URL, а вполне конкретную, из всей кучи.
 
Вот что отдаётся без [0].Url --- >тыц<.
Есть какие-то варианты заполучить URL из той части, где FileId : MicrosoftEdge_X64_106.0.1370.52.exe (у неё максимальный SizeInBytes, как вариант), а не что-либо другое?

Всего записей: 4267 | Зарегистр. 04-11-2010 | Отправлено: 00:15 24-10-2022 | Исправлено: insorg, 00:19 24-10-2022
iNNOKENTIY21



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

Код:
@powershell -Command "((Invoke-RestMethod -Method 'Post' -Uri 'https://msedge.api.cdp.microsoft.com/api/v1.1/internal/contents/Browser/namespaces/Default/names/msedge-stable-win-x64/versions/106.0.1370.52/files?action=GenerateDownloadInfo&foregroundPriority=true') | ? FileId -eq 'MicrosoftEdge_X64_106.0.1370.52.exe').Url"

Всего записей: 3292 | Зарегистр. 16-08-2012 | Отправлено: 02:39 24-10-2022
insorg



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Супер. Отдаёт что надо. Спасибо.

Всего записей: 4267 | Зарегистр. 04-11-2010 | Отправлено: 02:53 24-10-2022
Открыть новую тему     Написать ответ в эту тему

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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru

Рейтинг.ru