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

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

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

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.51 до Windows 10) и command.com (DOS 5.0 и выше). Старые командные процессоры можно запускать на более новых ОС, хотя не всё может работать корректно. Подробная документация по командам cmd.exe и стандартным утилитам ОС для NT 3.51, NT 4.0, NT 5.0 (Windows 2000) и NT 5.2 (Windows Server 2003). Сборник представляет исторический интерес, а также незаменим для тех, у кого появилось желание сделать свои скрипты работоспобными не только на текущей версии ОС. Ссылки wdho.ru tinyupload.com dbree.org
 
· Сборник одним архивом: Сотни Win32 утилит командной строки, нетривиальные .cmd файлы, .bat miniperl скрипты (не требующие полноценной установки Perl), FAR Manager с плагинами и настройками, разное для DOS/DOSBox (откуда под Win32 интерес представляют три продвинутых "мультисистемных" .bat файла да ещё, может быть, оболочка Necromancer DOS Navigator с поддержкой LFN и доступом к буферу обмена Windows). Краткие описания всего - в файликах files.bbs

Всего записей: 37428 | Зарегистр. 26-02-2002 | Отправлено: 13:35 19-09-2020 | Исправлено: Maz, 07:16 24-04-2021
M_Volkov



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

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



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

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



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

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



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

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

Всего записей: 2704 | Зарегистр. 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-файл русских букв не понимает. Что-то можно сделать, чтобы понимал?

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



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

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

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

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

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

Код:
 
chcp 1251
...
chcp 866
 

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



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

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

Junior 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

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



Full 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

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

Junior 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)

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



Full 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 не нужен, а нужно только проверять его наличие на сервере, то этого должно быть достаточно.

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

Junior 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
Может, для запроса наличия файла нужны еще какие-то дополнительно параметры?

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



Full 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  
 

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

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

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



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

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

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

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

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

Всего записей: 128 | Зарегистр. 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


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

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

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



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

Всего записей: 404 | Зарегистр. 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

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


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru