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

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

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

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

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



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

Цитата:
curl -k httрs://cshive.com/model/265748 >barbaradance_01.xml  

 
а потом использовать xmllint из пакета libxml2 для парсинга этого файла  

Цитата:
xmllint.exe --html --xpath "string(//source/@src)" barbaradance_01.xml 2>nul

 
Либо использовать VBScript или PowerShell с регулярными выражениями.

Всего записей: 677 | Зарегистр. 12-09-2017 | Отправлено: 19:50 27-11-2020 | Исправлено: Fenrizz, 22:18 27-11-2020
notinthewoods



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

Цитата:
set /p name=name:  
::dirtypub
set /p url=url:  
::https://cshive.com/model/771075
 
for /f "delims=" %%a in ('curl -k %url%') do @set xml=%%a
::получить результат запроса curl и вывести в переменную xml
 
for /f "delims=" %%a in ('xmllint --html --xpath "string(//source/@src)" %xml%') do @set videourl=%%a
::извлечь с помощью xmllint переменную videourl из переменной xml
 
streamlink %videourl% best -o %name%.ts

Но с синтаксисом здесь большие проблемы. Как лучше сделать?

Всего записей: 487 | Зарегистр. 31-01-2015 | Отправлено: 23:44 27-11-2020
Fenrizz



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

Цитата:
set url="https://cshive.com/model/771075"  
set name=qwerty
 
FOR /F "tokens=*" %%I IN ('curl -k %url% ^| xmllint.exe --format --html --xpath "string(//source/@src)" - 2^>nul') DO (
echo %%I
SET videourl=%%I
)  
streamlink %videourl% best -o %name%.ts  

Всего записей: 677 | Зарегистр. 12-09-2017 | Отправлено: 07:02 28-11-2020 | Исправлено: Fenrizz, 09:34 28-11-2020
YuS 2



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

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

для работы powershell именно с XML, регэкспы не требуются.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 10:54 28-11-2020
Artem_Butenko



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, прошу Вашей помощи. Немного переделал сценарий чтения значений из "*.ini-файла".
Однако столкнулся с двумя трудностями:
1. Сценарий не исполняется, если в пути к пакетному файлу есть пробелы.
2. При обрамлении %~dp0Settings.ini в кавычки, чтение значений параметров из "*.ini-файла" не происходит.
Пожалуйста, помогите разобраться, что я делаю неправильно.

Всего записей: 707 | Зарегистр. 19-02-2008 | Отправлено: 11:51 28-11-2020 | Исправлено: Artem_Butenko, 11:57 28-11-2020
KiloSub



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Artem_Butenko
Попробуй при обрамлении %~dp0Settings.ini в кавычки строку через одну сделать так, вдруг поможет:

Код:
Set "SettingsINIFile=%~1"

Потом в командах %SettingsINIFile% тоже в кавычках.

Всего записей: 420 | Зарегистр. 30-05-2020 | Отправлено: 11:58 28-11-2020 | Исправлено: KiloSub, 12:09 28-11-2020
notinthewoods



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz
Еще раз большое спасибо за помощь - конкретную и по существу вопроса!

Всего записей: 487 | Зарегистр. 31-01-2015 | Отправлено: 12:23 28-11-2020
Artem_Butenko



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

Цитата:
Попробуй при обрамлении %~dp0Settings.ini в кавычки строку через одну сделать так, вдруг поможет:
 
Код:
Set "SettingsINIFile=%~1"
 
Потом в командах %SettingsINIFile% тоже в кавычках.

 
Увы, не помогло!

Всего записей: 707 | Зарегистр. 19-02-2008 | Отправлено: 12:28 28-11-2020
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Artem_Butenko
Как ошибку ищете?
 
Добавлено:
Artem_Butenko
Советую перед каждой командой вставить echo, а после - pause. И сразу найдете, в чем проблема.

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

Всего записей: 3982 | Зарегистр. 18-04-2005 | Отправлено: 12:35 28-11-2020
KiloSub



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Artem_Butenko
вот эти строки вроде нужно подправить:
 

Код:
If Not Exist "%SettingsINIFile%" (
...
For /f "usebackq eol=; delims== tokens=1,2" %%i In ("%SettingsINIFile%") Do (

Всего записей: 420 | Зарегистр. 30-05-2020 | Отправлено: 12:41 28-11-2020 | Исправлено: KiloSub, 12:42 28-11-2020
Artem_Butenko



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

Цитата:
Artem_Butenko
Как ошибку ищете?  

-----
1. Сценарий не исполняется, если в пути к пакетному файлу есть пробелы.
2. При обрамлении %~dp0Settings.ini в кавычки, чтение значений параметров из "*.ini-файла" не происходит.
 

Цитата:
Добавлено:
Artem_Butenko
Советую перед каждой командой вставить echo, а после - pause. И сразу найдете, в чем проблема.

-----
Сценарий не мой, я лишь его адаптировал его под себя. Если у Вас есть решения, пожалуйста поделитесь, буду Вам благодарен.
 
Добавлено:
KiloSub
 

Цитата:
Call :Read_SettingsINIFile "%~dp0Settings.ini" || Goto :CreateSettingsINIFile


Цитата:
For /f "usebackq eol=; delims== tokens=1,2" %%i In (%SettingsINIFile%) Do (  

 
Так будет правильнее. Спасибо Вам, навели на мысль!
 
 

Всего записей: 707 | Зарегистр. 19-02-2008 | Отправлено: 12:43 28-11-2020
GCRaistlin



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

Цитата:
Сценарий не мой, я лишь его адаптировал его под себя.

Не имеет значения. После адаптации всегда нужна отладка.

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

Всего записей: 3982 | Зарегистр. 18-04-2005 | Отправлено: 12:54 28-11-2020
Death_INN

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

Код:
reg SAVE HKLM\SAM SAM

В консоли ок. Создал батник test.cmd с одной этой строкой, но не отрабатывает, а зацикливается. ЧЯДНТ?

Всего записей: 3048 | Зарегистр. 24-10-2002 | Отправлено: 04:16 29-11-2020 | Исправлено: Death_INN, 04:18 29-11-2020
teleportex

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
привет народ.
написал команду -
Код:
 
for %A IN (служба
служба
служба) DO net stop %A
 

но это работает только если в окно cmd забивать.
для батника, как я понял нужно использовать %% вместо %
но всё равно не работает из батника.  

Всего записей: 958 | Зарегистр. 13-02-2013 | Отправлено: 13:47 30-11-2020
Fenrizz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
teleportex
А что пишет?  
Попробуйте в одну строчку через пробел

Цитата:
for %%A IN (служба1 служба2 служба3) DO net stop %%A  

Всего записей: 677 | Зарегистр. 12-09-2017 | Отправлено: 14:15 30-11-2020 | Исправлено: Fenrizz, 14:16 30-11-2020
Inoz2000



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

Цитата:
если в окно cmd забивать
забивать несколько строк яб не догадался

Цитата:
не работает
может лень?
 
Добавлено:
всмысле, может недостаточно прав
 
 
Добавлено:
или я не прав

Всего записей: 4897 | Зарегистр. 23-04-2009 | Отправлено: 14:20 30-11-2020
teleportex

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

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

так сработало, спасибо.
на другом ресурсе пример давали с переносом строк и человек отписывался, что работает.

Всего записей: 958 | Зарегистр. 13-02-2013 | Отправлено: 14:55 30-11-2020 | Исправлено: teleportex, 14:57 30-11-2020
Fenrizz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
teleportex
У меня тоже вариант в несколько строк работает.  
Не знаю, в чём может быть проблема, если только перенос строк в формате UNIX, а не Windows?

Всего записей: 677 | Зарегистр. 12-09-2017 | Отправлено: 16:02 30-11-2020
KiloSub



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго. Вот смотрите:

Код:
set count=0
for /f "tokens=*" %%F in ('echo portable64.dll ^& type dependentlibs.list') do (
    set /a count+=1
    if !count!==1 (
        echo %%F>dependentlibs.list
    ) else (
        echo %%F>>dependentlibs.list
    )
)

Таким способом в файл dependentlibs.list первой строчкой впишется portable64.dll, но приходится писать построчно весь этот файл. По-другому у меня не получилось, а хочется, чтобы одним махом, типа сразу весь type...>в файл и без промежуточного файла.

Всего записей: 420 | Зарегистр. 30-05-2020 | Отправлено: 21:34 30-11-2020 | Исправлено: KiloSub, 21:47 30-11-2020
Inoz2000



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KiloSub
вот и кстати в dependentlibs.list мне AkelPad показывает, что новые строки в UNIX-формате.
 
Добавлено:

Код:
 
set LF=^
 
 
SETLOCAL EnableDelayedExpansion
for /f "tokens=*" %%F in ('type dependentlibs.list') do set d=!d!!LF!%%F
echo portable64.dll!d!>dependentlibs.list
 

ps Две пустые строки нужны для правильной работы.
pps Возможно появление пробелов при копировании.
 
ppps Возможно появление знатоков повершела, с решением в одну строку.

Всего записей: 4897 | Зарегистр. 23-04-2009 | Отправлено: 22:08 30-11-2020
Открыть новую тему     Написать ответ в эту тему

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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru