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

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

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

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

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
  Уважаемые Камрады, прошу Вашей помощи. Возникла "тривиальная" задача, прочитать значение ключей "*.ini-файла" и записать их в переменные. Например, имеем "*.ini-файл" следующего содержания. Необходимо прочитать, значение ключей (Key1, Key2 и Key3), каждый в отдельную переменную, для дальнейшего использования в пакетном скрипте.
   Первично, можно ли выполнить следующие проверки:
  1. Присутствие файла "Settings.ini", рядом с пакетным файлом сценария, если конфигурационный файл не найден, создать его со следующим содержанием (рядом с пакетным файлом сценария) и завершить работу пакетного файла.
  2. Проверить, присутствие в конфигурационном файле, всех ключей (Key1, Key2 и Key3), если хотя бы один из них не найден создать новый "Settings.ini" (рядом с пакетным файлом сценария), со следующим содержанием и завершить работу пакетного файла.
  3. Можно ли избавиться от символа решетки (#) в пробелах между строками "Settings.ini", например. Просто, во всех похожих примерах он используется. Назначение данного символа мне неизвестно.
   Признаюсь, просмотрел все части топика в версии для печати, похожий пример нашёл. Только вовсе в нём запутался. Буду Вам сердечно благодарен за помощь!
--------------------------------------
 
lexapass
Большое Вам человеческое спасибо за помощь!

Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 02:42 21-11-2020 | Исправлено: Artem_Butenko, 04:48 23-11-2020
dedulya68



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет. Есть такой батник
Как его изменить, чтоб при запуске создавалась следующая резервная копия с цифрой (1,2,3...)?

Всего записей: 941 | Зарегистр. 22-12-2016 | Отправлено: 03:25 21-11-2020
khasia



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

Цитата:
Как его изменить,

Попробуй так, после выполнения рядом с батником "ляжет" метка с номером только что созданной копии.

Цитата:
@echo off
pushd "%~dp0"
robocopy "D:\CentBrowser\User Data" "D:\User Data" /E
if not exist *.BAKUP set x=>0.BAKUP
:NUM
for /F "delims=" %%A in ('dir "%~dp0*.BAKUP" /b /s') do (set /A G=%%~nA)
set /A M=%G%+1
If not exist "D:\User Data_%M%" (ren "D:\User Data" "User Data_%M%") else (move /y %G%.BAKUP %M%.BAKUP&goto :NUM)
move /y %G%.BAKUP %M%.BAKUP
pause

Тестировал только на пустых папках т.е. без самого процесса robocopy.

Всего записей: 2248 | Зарегистр. 18-02-2010 | Отправлено: 14:59 21-11-2020
dedulya68



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
khasia
Отлично. А можно, чтоб после отработки батника, удалялся файл (1,...).BAKUP

Всего записей: 941 | Зарегистр. 22-12-2016 | Отправлено: 15:22 21-11-2020
khasia



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

Цитата:
move /y %G%.BAKUP %M%.BAKUP  

заменить на

Цитата:
del /f /q %G%.BAKUP


Всего записей: 2248 | Зарегистр. 18-02-2010 | Отправлено: 15:37 21-11-2020 | Исправлено: khasia, 15:38 21-11-2020
dedulya68



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

Цитата:
заменить на

То,что надо

Всего записей: 941 | Зарегистр. 22-12-2016 | Отправлено: 15:56 21-11-2020
lexapass



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Artem_Butenko
Для 1 и 2 пример проверок ниже.
Найденный Вами пример чтения из INI следует сохранить рядом под именем readini.cmd, так как он будет использоваться для чтения значения ключей из Settings.ini.
По п.3 уже было нечто близкое.

Код:
@echo off
setlocal enabledelayedexpansion
 
rem Проверка п.1
if not exist Settings.ini goto :CreateSettingsIni
 
rem Проверка п.2
Set /a KeysCount=0
for %%k in (Key1 Key2 Key3) do for /f %%v in ('call readini.cmd Settings.ini "Settings" "%%k" ^|find "%%k="') do set /a KeysCount+=1
if !KeysCount! NEQ 3 goto :CreateSettingsIni
 
rem Здесь можно работать с ключами
for %%k in (Key1 Key2 Key3) do for /f "tokens=2* delims==" %%v in ('call readini.cmd Settings.ini "Settings" "%%k" ^|find "%%k="') do set "%%kValue=%%v"
 
echo Key1=%Key1Value%
echo Key2=%Key2Value%
echo Key3=%Key3Value%
 
goto :eof
 
:CreateSettingsIni
echo [Settings]>Settings.ini
echo.>>Settings.ini
echo Key1=>>Settings.ini
echo Key2=>>Settings.ini
echo Key3=>>Settings.ini
exit /b

 

Всего записей: 566 | Зарегистр. 11-10-2004 | Отправлено: 16:08 21-11-2020 | Исправлено: lexapass, 10:57 22-11-2020
ygoda52

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, в чём причина.Скрипт vbs на Windows 7 работает, а на Windows 10 выдаёт синтаксическую ошибку 800a03ea

Всего записей: 63 | Зарегистр. 28-08-2010 | Отправлено: 21:17 26-11-2020
Fenrizz



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

Цитата:
Всем привет. Есть такой батник [?]  
Как его изменить, чтоб при запуске создавалась следующая резервная копия с цифрой (1,2,3...)?  

 

Цитата:
set "FolderNumber=0"
 
:FolderNameLoop
set /A FolderNumber+=1
if exist "D:\User Data%FolderNumber%" goto FolderNameLoop
 
robocopy "D:\CentBrowser\User Data" "D:\User Data%FolderNumber%" /E  

 
 

Всего записей: 677 | Зарегистр. 12-09-2017 | Отправлено: 23:15 26-11-2020 | Исправлено: Fenrizz, 23:17 26-11-2020
Artem_Butenko



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

Цитата:
  Уважаемые Камрады, прошу Вашей помощи. Возникла "тривиальная" задача, прочитать значение ключей "*.ini-файла" и записать их в переменные. Например, имеем "*.ini-файл" следующего содержания. Необходимо прочитать, значение ключей (Key1, Key2 и Key3), каждый в отдельную переменную, для дальнейшего использования в пакетном скрипте.
   Первично, можно ли выполнить следующие проверки:
  1. Присутствие файла "Settings.ini", рядом с пакетным файлом сценария, если конфигурационный файл не найден, создать его со следующим содержанием (рядом с пакетным файлом сценария) и завершить работу пакетного файла.
  2. Проверить, присутствие в конфигурационном файле, всех ключей (Key1, Key2 и Key3), если хотя бы один из них не найден создать новый "Settings.ini" (рядом с пакетным файлом сценария), со следующим содержанием и завершить работу пакетного файла.
  3. Можно ли избавиться от символа решетки (#) в пробелах между строками "Settings.ini", например. Просто, во всех похожих примерах он используется. Назначение данного символа мне неизвестно.
   Признаюсь, просмотрел все части топика в версии для печати, похожий пример нашёл. Только вовсе в нём запутался. Буду Вам сердечно благодарен за помощь!
--------------------------------------  

 
Попробовал детальнее. Пакетный файл множит процессы "cmd.exe", прочитать "инишник" не получается.

Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 03:32 27-11-2020
bytie

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Artem_Butenko
Можно попробовать INIFILE от Horst Schaeffer
https://www.horstmuc.de/wbat32.htm#inifile

Всего записей: 295 | Зарегистр. 18-08-2005 | Отправлено: 09:36 27-11-2020
lexapass



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

Цитата:
Попробовал детальнее. Пакетный файл множит процессы "cmd.exe", прочитать "инишник" не получается.

Вы не сообщили ничего существенного, так что я не могу сказать, в чем ошибка.
Исходные данные одинаковы.
Мой пример при условии сохранения рядом с ним файла readini_nt.txt из Вашей ссылки под именем readini.cmd, как указывал ранее, вполне корректно отрабатывает пункты 1 и 2 и для подходящего Settings.ini выводит значения ключей.
Проверяйт readini.cmd и его вызовы, наверное. Его текст достаточно информативен.
 

Всего записей: 566 | Зарегистр. 11-10-2004 | Отправлено: 11:56 27-11-2020
notinthewoods



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если сделать такой запрос (для цитаты в ссылке латинское p заменено на русское р):

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

или

Цитата:
http GET httрs://cshive.com/model/265748 >barbaradance_02.xml

Получается внушительный документ с кучей данных.
Как сделать запрос с дополнительными параметрами, чтобы извлечь только плейлист m3u8 ?
Выглядит он, напр. вот так:

Цитата:
httрs://edge316.stream.highwebmedia.com/live-hls/amlst:barbaradance-sd-741c6327c557f5f0a0ea9cc665c268bfa9be039a5307ed5147a9a3247bb2777d_trns_h264/playlist.m3u8

Примечание.
1. Плейлист будет фигурировать в документе только в том случае, если вещатель (конкретный номер, в данном случае - 265748) находится онлайн.
2. Какой конкретно вещатель - в данном случае, не важно. Кто онлайн - можно увидеть на главной странице cshive.com.
3. Плейлист нужен как переменное значение для подстановки в программу записи потока именно с сайта cshive.com (по определенным причинам, связанных с геолокацией).

Всего записей: 496 | Зарегистр. 31-01-2015 | Отправлено: 19:38 27-11-2020 | Исправлено: notinthewoods, 19:39 27-11-2020
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

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

Всего записей: 496 | Зарегистр. 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-файла" не происходит.
Пожалуйста, помогите разобраться, что я делаю неправильно.

Всего записей: 711 | Зарегистр. 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
Еще раз большое спасибо за помощь - конкретную и по существу вопроса!

Всего записей: 496 | Зарегистр. 31-01-2015 | Отправлено: 12:23 28-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 189 190 191 192

Компьютерный форум 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