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

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

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

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

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



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

Цитата:
findstr принципиально с русским текстом работать не хочет?  

Работает, в кодировке DOS-866

Всего записей: 410 | Зарегистр. 12-09-2017 | Отправлено: 06:26 21-06-2021
bomzz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
older
example.zip   3,65 МБ (3 827 832 байт)
 
Fenrizz
понижение до 1251 в большинстве случаев UTF-8 текст еще переживет, но 866 уже слишком.
жаль, команда findstr работает на порядок быстрее конструкций с if
 
Добавлено:
хотя можно было бы просто отразить UTF-8 текст в 866 для поиска совпадений, как хеш сумму

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 06:43 21-06-2021 | Исправлено: bomzz, 06:47 21-06-2021
bomzz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
как внутри кода у строки в переменной кодировку поменять? с 1251 на 866
c findstr работает значительно шустрее, но хотелось бы на выходе получить 1251,
только сравнение в 866 производить.

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 14:16 21-06-2021 | Исправлено: bomzz, 14:18 21-06-2021
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, bomzz
0. Помните о "проблеме XY"
1.
Цитата:
консоль вообще вылетает.  что приводит к остановке батника, так как curl использует ту же консоль.

Встречал такое для jq. Попробуйте другую сборку curl (из другого источника). Вместо "start /wait" можно использовать в таком случае "cmd /c".  
2.
Цитата:
findstr принципиально с русским текстом работать не хочет?

Цитата:
c findstr работает значительно шустрее, но хотелось бы на выходе получить 1251

Что Вы хотите разобрать (txt,json, xml/html)? Попробуйте "find" вместо "findstr". Он с 1251 кажется работал. Про grep sed вообще молчу...
UPD - Есть еще win_iconv - крохотная утилитка, аналог iconv для windows - но без "-c"!

Всего записей: 1846 | Зарегистр. 07-08-2002 | Отправлено: 14:42 21-06-2021 | Исправлено: Alex_Piggy, 14:46 21-06-2021
bomzz

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

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 14:51 21-06-2021
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
bomzz
Я б вообще посоветовал https://rwijnsma.home.xs4all.nl/files/curl/
Пример файлов (в личку если private)?

Всего записей: 1846 | Зарегистр. 07-08-2002 | Отправлено: 14:58 21-06-2021
bomzz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
find все проблемы порешало
 
Добавлено:
конструкция с if условный файл обрабатывала 20 секунд, find 7 секунд,
причем вчера я еще код в два раза оптимизировал
 
find и с UTF-8 справился, то есть вообще все вопросы закрыты

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 15:00 21-06-2021 | Исправлено: bomzz, 15:14 21-06-2021
bomzz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
https://cloud.mail.ru/public/6GTq/zmFnCWqwk
между делом две полезняшки родились.
одна скачивает файл по ссылке из командного параметра,
с помощью IE дллки URLMON с вытекающим использованием кукишей.
вторая закрывает все окна по имени переданному командным параметром.
командный параметр вводиться без кавычек, просто после пробела.
на сервер к остальным уже не залить.
сейчас попытаюсь сделать чтоб на лету кодировку переменных меняла с UTF на 866

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 09:14 22-06-2021 | Исправлено: bomzz, 09:17 22-06-2021
bomzz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
оказалось интерпретатор на skip=0 ругается, никто не знает как обойти?

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 08:43 24-06-2021
BorlandIMHO

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

Цитата:
интерпретатор на skip=0 ругается, никто не знает как обойти?

Лобовое решение: если нужно пропустить 0 - запускать команду без skip. типа

Код:
if %LINESTOSKIP% GTR 0 (
    команда со skip=%LINESTOSKIP%
) else (
    команда без skip
)

Это, конечно, если skip заранее неизвестен. Если же всегда 0 - просто уберите параметр: с нулевым значением он всё равно абсолютно лишён смысла...

----------
http://www.imho.ws

Всего записей: 1244 | Зарегистр. 12-10-2006 | Отправлено: 15:21 24-06-2021 | Исправлено: BorlandIMHO, 15:23 24-06-2021
bomzz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
команда это цикл, как он будет из if крутится

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 15:23 24-06-2021
BorlandIMHO

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

Цитата:
 цикл, как он будет из if крутится

Точно также, как без if.


----------
http://www.imho.ws

Всего записей: 1244 | Зарегистр. 12-10-2006 | Отправлено: 15:27 24-06-2021
kraeved



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
Может, хватит кормить тролля и пытаться угадывать, что он имеет в виду? Уже 3 страницы
извели на этого штирлица, который якобы программирует вызовы WinAPI на ассемблере,
но плутает в основах командной строки, абсолютно не трудясь ясно формулировать задачу.
Люди, кому действительно нужна помощь, ведут себя иначе, а вы поощряете этот бубнёж
и способствуете превращению темы в дневник одного горе-программиста.

Всего записей: 838 | Зарегистр. 01-03-2003 | Отправлено: 16:00 24-06-2021 | Исправлено: kraeved, 11:11 25-06-2021
bomzz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подробнее...
 
вот такая полезняшка. позволяет сравнивать два utf файла через их отражение в 866 кодировке
 
при сравнении двух юникодных файлов через отражение в 866 кодировку,
выявилась неожиданная проблема, батник работает с юникодом как просто с набором байтов,
и разрезая строку по знаку, оставляет в конце мусор от широкого юникодного кода,
которые не виден но тем не менее требует обрезки на 1 знак.
когда мусор нулевой он не сильно мешает, а когда не нулевой, парит моск невидимый знак.
ошибка со стороны cmd, ничего не поделать.
возвращаемое значение число знаков вывода
 
для использования find и findstr для работы с utf файлами

Цитата:
            for /f "delims=*" %%i in ('^(echo "%%b"^)^|utf8to866.exe') do set "_out=%%i"
            set "_out=%_out:~1,-2%"

один знак с конца utf переменной вырезанной cmd срезается,
кавычки решают проблемы со всеми защищенными знаками,
они тоже потом срезаются, итого получается один знак с начала,
два с конца. проверял на украинских символах, они заменяются
на вопросики, что не мешает искать включение подстроки в файле
 
utf8to866
исправил ошибки недочеты
 
https://booomz.000webhostapp.com/download/

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 19:29 24-06-2021 | Исправлено: bomzz, 12:49 26-06-2021
bomzz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
не помогла моя защита от вылетания сторонней консольной утилиты, curl разрушил обе консоли.
первый сбой за столько дней ну хоть удалось проверить. как он умудрился обе консоли разрушить.
надо его запускать без wait с заданным именем окна и ожидать окончания процесса.
затем проверять как он отработал. та консоль после разурешния уже никакие ctrl C,
"о закрытии крестиком",  не возвращала все равно.
 
как обе консоли могли разрушиться. это или первая консоль вместо ctrl C получила строку нулей до переполнения буфера, или из за импорта между линуксом и виндой сбой произошел в kernel32

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 09:49 26-06-2021 | Исправлено: bomzz, 10:08 26-06-2021
syrenium

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть необходимость, чтобы при запуске bat-файла он проверял, запущен ли он с правами администратора и если нет, то запускался от имени администратора.
Подскажите, пожалуйста, команду (Windows 10 x64).

Всего записей: 515 | Зарегистр. 07-12-2015 | Отправлено: 14:56 26-06-2021
GCRaistlin



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

Цитата:
Есть необходимость, чтобы при запуске bat-файла он проверял, запущен ли он с правами администратора


Код:
 
>nul 2>&1 net.exe session && echo Elevated. || echo Non-elevated.
 


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

Всего записей: 3096 | Зарегистр. 18-04-2005 | Отправлено: 15:07 26-06-2021
bomzz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
хотя бы пару слов как это работает?

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 15:17 26-06-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzz
net.exe session возвращает 0, если запущена под админом, и 1, если нет.

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

Всего записей: 3096 | Зарегистр. 18-04-2005 | Отправлено: 15:25 26-06-2021
bomzz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzz
>nul 2>&1
а это что значит?
 
Добавлено:
никто не знает бывают русские точечные шрифты на семерку?
или может кто то нормальный шрифт консольный знает

Всего записей: 3069 | Зарегистр. 29-03-2016 | Отправлено: 15:26 26-06-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

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