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

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

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

Maz (20-06-2024 22:42): Командная строка, батники, сценарии - bat, cmd (7 часть)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 200 201

   

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

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



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
yurkesha
Цитата:
- Почему пути изменились?
Посмотрел в TC (точнее в DC), вроде те же папки и файлы, переписал для пробы. Но если без разницы, перепишу обратно.
Цитата:
Вот тут не понял - от имени какого пользователя операционной системы стартует скрипт?
Пока подомной (с админскими правами ОС), но планируется под последним пользователем работающим (работавшим) в 1С. Будут проблемы? Как сделать правильно?
 
Добавлено:
Fenrizz
Цитата:
TIMEOUT /T 120
120 секунд?

Всего записей: 5789 | Зарегистр. 23-06-2008 | Отправлено: 09:58 01-02-2021
yurkesha



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
M_Volkov
ну во-первых - под каждым из возможных пользователей права доступа должны быть достаточными для доступа к телу скрипта и всем необходимым ресурсам.
Это не есть гуд - правильнее будет настроить задачу в планировщике(выполнение по требованию) от имени пользователя имеющего право на вход в качестве пакетного задания и из 1С пинать это задание.
Для этого отдельно взятого пользователя заведомо меньше гемороя с правами, путями, переменными среды и так далее...

Всего записей: 2757 | Зарегистр. 15-12-2003 | Отправлено: 10:48 01-02-2021
M_Volkov



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
yurkesha
Цитата:
Для этого отдельно взятого пользователя заведомо меньше гемороя с правами, путями, переменными среды и так далее...
bat-файл делаю для того, чтобы файл dt-выгрузки формировался, когда у меня не будет возможности подключиться к рабочему серверу, чтобы все работало без меня.
В свойствах bat-файла, на вкладке Безопасность у Все стоит галочка на Чтение и выполнение. Что еще проверить?

Всего записей: 5789 | Зарегистр. 23-06-2008 | Отправлено: 12:09 01-02-2021
yurkesha



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

Цитата:
Что еще проверить?
Все проверить - под каждым из возможных пользователей проверить доступ на чтение/запись в выбранное место - например путем создания файла по указанному месторасположению. Также проверить способен ли 1С понимать UNC пути.
 

Всего записей: 2757 | Зарегистр. 15-12-2003 | Отправлено: 13:23 01-02-2021
M_Volkov



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

Цитата:
"C:\Program Files (x86)\1cv8\8.3.10.2466\bin\1cv8s.exe" CONFIG /S andromeda\AAAAkit /DisableStartupMessages /DumpIB %BakName% /N"Администратор" /P"1001221"
Выскакивает окно выбора пользователя с пользователем "ЁфьшэшёЄЁрЄюЁ" вместо "Администратор". bat-файл русских букв не понимает. Что-то можно сделать, чтобы понимал?

Всего записей: 5789 | Зарегистр. 23-06-2008 | Отправлено: 18:36 01-02-2021 | Исправлено: M_Volkov, 18:42 01-02-2021
yurkesha



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
M_Volkov
да можно - только начинать надо издаля
Кодировка BAT/CMD по-умолчанию CP866 - ты же все сделал в WIN1251.
Можно и с ней работать, но в данной ситуации в этом не вижу смысла...

Всего записей: 2757 | Зарегистр. 15-12-2003 | Отправлено: 19:15 01-02-2021
A27

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
M_Volkov
Цитата:
Посмотрел в TC (точнее в DC), вроде те же папки и файлы, переписал для пробы. Но если без разницы, перепишу обратно.
Верно. Для батника лучше использовать пути, указывающие файл на диске ( f:\...\... ), а не в сетевой папке ( \\...\... ).
 

Цитата:
Пока подомной (с админскими правами ОС), но планируется под последним пользователем работающим (работавшим) в 1С. Будут проблемы? Как сделать правильно?
Запускать можно от любой учётной записи имеющей права администратора, например под той же, под которой работает 1C сервер. А от последнего пользователя требуется только факт его присутствия с последующим выходом, т.е. важно лишь событие, т.к. последний пользователь будет всегда разный. Информация о последнем пользователе должна приходить от 1C или её нужно получать от ОС.
 

Цитата:
bat-файл русских букв не понимает. Что-то можно сделать, чтобы понимал?
Команды, содержащие русские буквы вписывайте между строк:

Код:
 
chcp 1251
...
chcp 866
 

Всего записей: 66 | Зарегистр. 30-03-2017 | Отправлено: 20:56 01-02-2021 | Исправлено: A27, 21:10 01-02-2021
M_Volkov



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
A27
Цитата:
Команды, содержащие русские буквы вписывайте между строк: chcp 1251
Спс, заработало!
Цитата:
Запускать можно от любой учётной записи имеющей права администратора...
Пока не понял, но посмотрим, будут ли проблемы...

Всего записей: 5789 | Зарегистр. 23-06-2008 | Отправлено: 08:16 02-02-2021 | Исправлено: M_Volkov, 08:12 23-02-2021
notinthewoods



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите, пожалуйста, сделать такой батник.
Есть онлайн-трансляция с https://URL_2/%name%. Если стример в онлайне, то на https://URL_1/%name% периодически обновляются превью в виде картинки JPG. Если стример в офлайне, то и картинок нет вовсе.
Задача. Проверять с периодичностью 30 сек https://URL_1/%name% и в любом случае создавать в папке записи файл JPG. Далее проверять его размер и в зависимости от результата - запускать проверку превью по новой или запускать запись видео.
Схематично это выглядит так:

Цитата:
set /p name=name:
 
:round1
timeout 30
wget https://URL_1/%name% -O D:\Folder\%name%.jpg
если размер файла D:\Folder\%name%.jpg равен 0
удалить D:\Folder\%name%.jpg & goto round1
иначе
удалить D:\Folder\%name%.jpg & goto round2
 
:round2
streamlink https://URL_2/%name% best -o D:\Folder\%name%.ts
goto round1

Всего записей: 514 | Зарегистр. 31-01-2015 | Отправлено: 18:31 02-02-2021
Fenrizz



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

Код:
set /p name=name:  
   
:round1  
timeout 30  
wget https://URL_1/%name% -O D:\Folder\%name%.jpg
 
FOR /F %%A IN ("D:\Folder\%name%.jpg") DO set size=%%~zA
 
if %size% equ 0 (
    del /Q "D:\Folder\%name%.jpg"
    goto round1
) ELSE (
    del /Q "D:\Folder\%name%.jpg"
    goto round2  
)
:round2  
streamlink https://URL_2/%name% best -o D:\Folder\%name%.ts  
goto round1  
 

 
Хотя не совсем понятно, зачем скачивать файл в любом случае, если можно сначала запросить его размер:
wget --spider "https://URL_1/%name%" 2>&1

Всего записей: 689 | Зарегистр. 12-09-2017 | Отправлено: 13:54 03-02-2021 | Исправлено: Fenrizz, 15:02 03-02-2021
notinthewoods



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz
Спасибо. У меня не получается сделать запрос размера, хотя файл скачивается без проблем.

Цитата:
D:\Folder>wget -P "D:\Folder" "https://cbjpeg.stream.highwebmedia.com/stream?room=yesonee" 2>&1
--17:32:33--  https://cbjpeg.stream.highwebmedia.com/stream?room=yesonee
           => `D:\Folder/stream@room=yesonee'
Resolving cbjpeg.stream.highwebmedia.com... done.
Connecting to cbjpeg.stream.highwebmedia.com[131.153.88.93]:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 34,393 [image/jpeg]
 
100%[====================================>] 34,393        32.80M/s    ETA 00:00
 
17:32:34 (32.80 MB/s) - `D:\Folder/stream@room=yesonee' saved [34393/34393]
 
 
D:\Folder>wget --spider "https://cbjpeg.stream.highwebmedia.com/stream?room=yesonee" 2>&1
--17:32:41--  https://cbjpeg.stream.highwebmedia.com/stream?room=yesonee
           => `stream@room=yesonee.1'
Resolving cbjpeg.stream.highwebmedia.com... done.
Connecting to cbjpeg.stream.highwebmedia.com[131.153.88.93]:443... connected.
HTTP request sent, awaiting response... 404 Not Found
17:32:41 ERROR 404: Not Found.

Ник берется отсюда: chaturbate.com (В РФ через прокси, VPN)

Всего записей: 514 | Зарегистр. 31-01-2015 | Отправлено: 17:34 03-02-2021 | Исправлено: notinthewoods, 18:03 03-02-2021
Fenrizz



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

Код:
FOR /F "tokens=1-5" %%A IN ('wget --spider "https://cbjpeg.stream.highwebmedia.com/stream?room=yesonee" 2^>^&1') DO (  
IF /I "%%B"=="ERROR 404:" IF /I "%%C"=="Not Found." goto round1 )
 

 
Но это не совсем правильный способ, лучше проверять код возврата:

Цитата:
0 - ошибок нет
1 - ошибка кода общего характера (generic error code)
2 - ошибка разрбора (parse error) при аналие опций командной строки и/или .wgetrc или .netrc
3 - ошибка файлового ввода/вывода
4 - ошибка сети
5 - ошибка проверки SSL
6 - ошибка аутентификации (неверное имя или пароль)
7 - ошибка протокола
8 - сервер при ответе выдал какую-либо ошибку  

 

Код:
wget --spider "https://cbjpeg.stream.highwebmedia.com/stream?room=yesonee" 2>&1  
if errorlevel 1 goto round1  

 
Если сам файл .jpg не нужен, а нужно только проверять его наличие на сервере, то этого должно быть достаточно.

Всего записей: 689 | Зарегистр. 12-09-2017 | Отправлено: 18:58 03-02-2021 | Исправлено: Fenrizz, 19:36 03-02-2021
notinthewoods



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

Цитата:
Если сам файл .jpg не нужен, а нужно только проверять его наличие на сервере, то этого должно быть достаточно.

Проблема в том, что при использовании ключа --spider %ErrorLevel% выдает 1 при фактическом наличии файла JPG и трансляции.

Код:
@echo off
set /p name=name:
wget --spider "https://cbjpeg.stream.highwebmedia.com/stream?room=%name%"
Echo Err=%ErrorLevel%
pause

Результат:

Цитата:
name:bunny_marthy
https://cbjpeg.stream.highwebmedia.com/stream?room=bunny_marthy
=> `stream@room=bunny_marthy'
Resolving cbjpeg.stream.highwebmedia.com... done.
Connecting to cbjpeg.stream.highwebmedia.com[131.153.88.95]:443... connected.
HTTP request sent, awaiting response... 404 Not Found
ERROR 404: Not Found.
 
Err=1

Если же ключ --spider не использовать, т.е. скачивать файл, то всё ОК - Err=0
Может, для запроса наличия файла нужны еще какие-то дополнительно параметры?

Всего записей: 514 | Зарегистр. 31-01-2015 | Отправлено: 22:39 03-02-2021
Fenrizz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
notinthewoods
Не знаю, возможно это зависит от сборки wget.
Тогда остаётся только парсить вывод:

Код:
wget --spider "https://cbjpeg.stream.highwebmedia.com/stream?room=%name%" 2>&1 | FIND /I "404 Not Found"
if errorlevel 1 goto goto round2
goto round1  
 

Всего записей: 689 | Зарегистр. 12-09-2017 | Отправлено: 06:35 04-02-2021 | Исправлено: Fenrizz, 06:50 04-02-2021
notinthewoods



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz
Спасибо за помощь. Мне в личке подсказали, как решить проблему через curl. Потому как требуемый сервер не понимает HEAD запросов.

Всего записей: 514 | Зарегистр. 31-01-2015 | Отправлено: 23:53 04-02-2021
Fenrizz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
notinthewoods
Можете поделиться тайными знаниями? Можно в личку.

Всего записей: 689 | Зарегистр. 12-09-2017 | Отправлено: 09:53 05-02-2021
fscpsd



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как можно через командную строку ПРИНУДИТЕЛЬНО завершать сеансы терминальных пользователей в среде Windows7/Server2008.  
Я попробовал было через logout.exe:

Код:
for /f "tokens=2," %p in ('quser ^| findstr /i "username"') do logout.exe %p

— но logout.exe не умеет завершать принудительно (некоторые приложения выдают сообщения о несохранённых данных и такое диалоговое окно не даёт завершиться сеансу), да ещё и не работает, когда сеанс находится в состоянии "Отключен".
Как же быть-то, не перезагружаться ведь из-за такой ерунды.

Всего записей: 1939 | Зарегистр. 16-09-2010 | Отправлено: 13:10 05-02-2021
yurkesha



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fscpsd
Код:
:: Убить все отключенные сессии
FOR /F "USEBACKQ TOKENS=2 DELIMS= " %%a IN (`quser^|findstr /b /v "^>"^|findstr /v " ID "^|findstr /v /i "rdp-tcp"`) DO logoff %%~a


Всего записей: 2757 | Зарегистр. 15-12-2003 | Отправлено: 13:57 05-02-2021
fscpsd



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yurkesha
Это шутка какая-то?
Зачем вы мне без объяснений советуете мой же вариант, да ещё и в каком-то нелепом исполнении? Хотите сказать, что если туда напихать побольше findstr и всяких разных левых ключей, то всё вдруг волшебным образом заработает?
 
Добавлено:
Ага, теперь до меня дошло, наконец.
Затупил, прошу прощения!
По крайней мере, одну проблему ваш вариант решает — через ID теперь завершаются сеансы в состоянии "Отключен".
Благодарю вас!

Всего записей: 1939 | Зарегистр. 16-09-2010 | Отправлено: 14:40 05-02-2021 | Исправлено: fscpsd, 16:06 05-02-2021
Fenrizz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fscpsd
rwinsta?  
http://pyatilistnik.org/how-to-terminate-a-user-session-on-a-terminal-server/
https://habr.com/ru/post/276935/

Всего записей: 689 | Зарегистр. 12-09-2017 | Отправлено: 15:43 05-02-2021 | Исправлено: Fenrizz, 15:45 05-02-2021
   

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

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии - bat, cmd
Maz (20-06-2024 22:42): Командная строка, батники, сценарии - bat, cmd (7 часть)


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru