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

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

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

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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скачал. И хз как всем этим пользоваться.  
Не вижу я там никаких "procprofiler64, awk".
 
Добавлено:
gawk "BEGIN{i=0} NR==FNR{a[$1]++; next} {i++;if ($1 in a) {print FILENAME,i,$1;}}" 1K1.txt 2.txt>>0.txt
Вроде ожило. Только я не понял че с ProcProfile.c делать.
А так да.. Буквально за 2 секунды и все 1К1-1К17 мне 2.txt проверило.
Ща че нить побольше поставлю на проверку..)))

Всего записей: 29 | Зарегистр. 24-09-2021 | Отправлено: 20:59 01-10-2021 | Исправлено: zh76internetru, 21:18 01-10-2021
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
zh76internetru
ProcProfile-1.5.1.7z\ProcProfile64.exe  
msvc_cl_64_rel_c.zip\msvc_cl_64_rel_c\gawk.exe или mingw64_gcc_64_rel_c.zip\mingw64_gcc_64_rel_c\gawk.exe

Всего записей: 1847 | Зарегистр. 07-08-2002 | Отправлено: 21:26 01-10-2021
zh76internetru

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Жесть.. Цельный шаблон 1К 1 млн строк 45 метров + проверяемый 520 метров (13,7 млн строк) за 15 сек прогнало и контрольные строки нашло..)))
Берем на вооружение, посмотрю как несколько процессов враз работать паралельно будут..)))
 

Цитата:
ProcProfile-1.5.1.7z\ProcProfile64.exe  

А где оно? Не вижу нигде..(((
gawk.exe только, вот его проверял. )))

Всего записей: 29 | Зарегистр. 24-09-2021 | Отправлено: 21:48 01-10-2021 | Исправлено: zh76internetru, 21:56 01-10-2021
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
zh76internetru
Там же где procprofile32.exe брали. https://encode.su/threads/1838-Command-Line-Process-Profiling-Tool/page2 => https://encode.su/attachment.php?attachmentid=2657&d=1388416311
ProcProfile.c - это исходники. procprofile32.exe, procprofile64.exe - версии собранные под разную разрядность.
Повторюсь - это профайлер/бенчмарк. Для работы не нужен.

Всего записей: 1847 | Зарегистр. 07-08-2002 | Отправлено: 22:02 01-10-2021 | Исправлено: Alex_Piggy, 22:04 01-10-2021
zh76internetru

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Короче вот это: mingw64_gcc_64_rel_c
Из него вот это:
 
gawk "BEGIN{i=0} NR==FNR{a[$1]++; next} {i++;if ($1 in a) {print FILENAME,i,$1;}}" 1K.txt 2.txt>>0.txt
 
И готово, так? )))
 
Спасибо большое.  
Зы. А на CUDA ниче подобного еще нет? ))))
Век живи век учись. ))) Все равно еще умней после нас будут )))
Кстати в 2025 типа видюхи, но на квантовом проце обещают в продажу пустить. )))
 
Добавлено:

Цитата:
посмотрю как несколько процессов враз работать паралельно будут..)))

Сглазил. 4 процесса враз, 4 шаблона, каждый проверяя свой файл по 500 метров  - ни одной контрольной строки в проверяемых не нашли.
Рипрег все четко нашел.  

Всего записей: 29 | Зарегистр. 24-09-2021 | Отправлено: 22:13 01-10-2021 | Исправлено: zh76internetru, 22:56 01-10-2021
zh76internetru

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

Цитата:
2.txt:45594 1K.txt:74040 WnKgKzJniQp1qkL1E1tgwyJvUUTNBXVN

Он у меня и в один поток перестал искать. Думал сломалось чего, оказалось проще...
В общем: в шаблоне чистые строки с содержимым например WnKgKzJniQp1qkL1E1tgwyJvUUTNBXVN
Если в искомом тоже чистая строка - находит без проблем. Но если в ней еще что то есть - не видит.  
Рипрег видит. Он всю строку с любым мусором выводит найдя нужное.
Этот мусор может быть таким:  
ячейка: WnKgKzJniQp1qkL1E1tgwyJvUUTNBXVN
или таким
"ячейка:WnKgKzJniQp1qkL1E1tgwyJvUUTNBXVN" (то есть без пробела и в кавычках).
Но рипрегом я ищу 3 мин, а новой штукой всего 15 сек.
 

Цитата:
UPD - Уточню насчет "something similar" - это Вы ищете полное совпадение строк, частичное или по регекспу?

Получается мне нужен частичный поиск? А че такое регекспу?
 
Добавлено:
Хм. Запустил 4 процесса. Нашел только чистые строки, но нашел.
Но по времени обработка 4-ех файлов по 500 мб заняла 170 сек.  
То есть 3 мин. Рипрег также в 4 потока тратит 5.5-6 мин. Но находит все.
 
 

Всего записей: 29 | Зарегистр. 24-09-2021 | Отправлено: 07:46 02-10-2021 | Исправлено: zh76internetru, 07:48 02-10-2021
Alex_Piggy

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

Цитата:
Но по времени обработка 4-ех файлов по 500 мб заняла 170 сек.


Цитата:
 Цельный шаблон 1К 1 млн строк 45 метров + проверяемый 520 метров (13,7 млн строк) за 15 сек

Какая из цитат верная?

Цитата:
А че такое регекспу?

Регулярные выражения.
 
Тогда попробуйте так:
awk "BEGIN{i=0} NR==FNR{a[$0]++; next} {i++; if (match($0,/[A-Za-z0-9]{10,}/,b)) if (b[0] in a) print FILENAME,i,$1; }" 1K.txt 2.txt
В строках из 2.txt будет находить фрагмент, состоящий из цифр и латиницы длиной не менее 10 символов и проверять его соответствие полным строкам в 1K.txt. У меня это 2.7 с против ~1.7 ранее.
 

Всего записей: 1847 | Зарегистр. 07-08-2002 | Отправлено: 08:46 02-10-2021 | Исправлено: Alex_Piggy, 08:50 02-10-2021
zh76internetru

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

Цитата:
Какая из цитат верная?

Если в один поток и строка в проверяемом без мусора находит быстро.
Если параллельно то дольше.. Но.. Это если прямо с жесткого диска запускать.
А если сначала в RAM загнать, то рипрег тратит примерно 130 сек на 4 враз запущенных проверки, а gawk максимум 15 сек...)))
Только что испытал.
Щас попробую новый код )))
 
Добавлено:
4 процесса враз заняло 49 сек.
Одиночным 43. Это в RAM.
Но нашло только чистые строки (((

Всего записей: 29 | Зарегистр. 24-09-2021 | Отправлено: 08:59 02-10-2021 | Исправлено: zh76internetru, 09:00 02-10-2021
Alex_Piggy

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

Цитата:
Это если прямо с жесткого диска запускать.

Понятно... Другая логика дисковых операций... Много мелких чтений, которые мешают друг другу. Поэтому в параллель медленнее чем последовательно.  
 

Цитата:
Но нашло только чистые строки (((

Не должно было... Можно точные примеры строк, которые НЕ поймались - файлом.
В 1K.txt длина шаблонов - от 30 до 32. Можно указать строже соответствие длины в регекспе:
awk "BEGIN{i=0} NR==FNR{a[$0]++; next} {i++; if (match($0,/[A-Za-z0-9]{30,32}/,b)) if (b[0] in a) print FILENAME,i,$1; }" 1K.txt 2.txt
Для запаралелливания можно попробовать через stdin (чтобы проверяемый файл не читать построчно с диска)
type 2.txt | awk "BEGIN{i=0} NR==FNR{a[$0]++; next} {i++; if (match($0,/[A-Za-z0-9]{30,32}/,b)) if (b[0] in a) print FILENAME,i,b[0]; }" 1K.txt -

Всего записей: 1847 | Зарегистр. 07-08-2002 | Отправлено: 09:17 02-10-2021
zh76internetru

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

Цитата:
Не должно было... Можно точные примеры строк, которые НЕ поймались - файлом.

Этот мусор может быть таким:  
cell: WnKgKzJniQp1qkL1E1tgwyJvUUTNBXVN
или таким
"cell:WnKgKzJniQp1qkL1E1tgwyJvUUTNBXVN" (то есть без пробела и в кавычках).
Вот такие строки не ловит.
 
 
Добавлено:

Цитата:
awk "BEGIN{i=0} NR==FNR{a[$0]++; next} {i++; if (match($0,/[A-Za-z0-9]{30,32}/,b)) if (b[0] in a) print FILENAME,i,$1; }" 1K.txt 2.txt

Теперь даже чистые не нашло.  
 
Добавлено:
Кстати gawk или просто awk? У меня gawk проверяет.

Всего записей: 29 | Зарегистр. 24-09-2021 | Отправлено: 09:20 02-10-2021 | Исправлено: zh76internetru, 09:26 02-10-2021
Alex_Piggy

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

Цитата:
Теперь даже чистые не нашло.  

Ладно... А так (бъет строки по не-латинице и не-цифрам и проверяет каждое поле)? Правда уже 3 с вместо 2...
awk -F "[^a-zA-Z0-9]+" "NR==FNR{for (i=1;i<=NF;i++) if ($i) a[$i]++; next} {for (i=1;i<=NF;i++) if ($i && $i in a) print FILENAME,$i;}" 1K.txt 2.txt
или (для rush или что там)
type 2.txt | awk -F "[^a-zA-Z0-9]+" "NR==FNR{for (i=1;i<=NF;i++) if ($i) a[$i]=1; next} {for (i=1;i<=NF;i++) if ($i && $i in a) print FILENAME,$i;}" 1K.txt - > 2.out
UPD: Для этого скрипта не имеет значения - awk или gawk.

Всего записей: 1847 | Зарегистр. 07-08-2002 | Отправлено: 14:07 02-10-2021 | Исправлено: Alex_Piggy, 14:11 02-10-2021
zh76internetru

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
gawk -F "[^a-zA-Z0-9]+" "NR==FNR{for (i=1;i<=NF;i++) if ($i) a[$i]++; next} {for (i=1;i<=NF;i++) if ($i && $i in a) print FILENAME,$i;}" 1K.txt 2.txt
 
Одиночный процесс в RAM - 46 сек, нашло все среди всякого мусора и даже без пробелов)))
Тот же код в 4 процессах - 57 сек, тоже нашло все )))
Оперативки жрет 0.3 Гига...)))
 
Где то у меня шаблончик 1К то был весом 2.6 гига то? ))) А то какой то блохой всего 36 метров шмаляю )))
В оперативку не влезет... 4 по 500 уже 2 гига RAM да еще если + 2.6... А у меня всего 8, 3.5 из них винда оттяпала )))
 
type 2.txt | gawk -F "[^a-zA-Z0-9]+" "NR==FNR{for (i=1;i<=NF;i++) if ($i) a[$i]=1; next} {for (i=1;i<=NF;i++) if ($i && $i in a) print FILENAME,$i;}" 1K.txt - > 2.out
 
"gawk" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
 
 
 
 
Добавлено:
Alex_Piggy
Еще раз огромное спасибо. в 3.5 раза скорость увеличилась по сравнению с рипгрегом.
Пошел винду перетыкать, а то стока мусора с инета натаскал. )))  
Мож еще чуток шустрее станет )))

Всего записей: 29 | Зарегистр. 24-09-2021 | Отправлено: 14:55 02-10-2021 | Исправлено: zh76internetru, 15:24 02-10-2021
Alex_Piggy

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

Цитата:
Где то у меня шаблончик 1К то был весом 2.6 гига то? )))

Пожалуйста внимательнее/осторожнее.  Я писал, что у меня в x32 системе - "(память = 5x размер файла шаблона)". И еще - на количество процессов. То есть на ~5 свободных гигах без возможных проблем можно запускать максимум 1Gb шаблон в один поток... Как себя awk ведет при x64 - не знаю. Может 10x?
PS. Проверил  - "type" тоже по 512 байт читает...

Всего записей: 1847 | Зарегистр. 07-08-2002 | Отправлено: 20:41 02-10-2021
Susie7



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не подскажите ли батник на убийство - witcher3.exe?
Чтобы лежал рядом с екзешником и к нему был ярлык на рабочем столу.
А то вешает систему, что мышка глючит и пр.
"witcher3.exe - kill naf!" - как-то так?

----------
Принцессы бывают не только в сказках

Всего записей: 786 | Зарегистр. 11-07-2018 | Отправлено: 14:58 08-10-2021 | Исправлено: Susie7, 15:00 08-10-2021
KiloSub



Запрет на пост
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Susie7

Код:
tasklist | find "witcher3.exe" && (taskkill /f /im witcher3.exe)

Всего записей: 420 | Зарегистр. 30-05-2020 | Отправлено: 15:04 08-10-2021
cl85

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста.
Есть батники и меню было разных цветов при помощи такого кода:

Код:
call :color a
call :echo "Пример."
 
:color
set "c=%1"
exit /b
 
:echo
for /f %%i in ('"prompt $h& for %%i in (.) do rem"') do (
pushd "%~dp0"
<nul>"%~1_" set /p="%%i%%i  "
findstr /a:%c% . "%~1_*"
if "%~2" neq "/" echo.
del "%~1_"
popd
set "c=")
exit /b

В Windows 10 всё было красиво, а в Windows 11 там где:

Код:
call :color a
call :echo

отображает крякобразы, цветов соответственно нет, но сам батник работает.
Как можно это исправить?
Спасибо.

Всего записей: 392 | Зарегистр. 26-10-2005 | Отправлено: 23:17 12-10-2021
westlife



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

Цитата:
отображает крякобразы

Поглядел в w11. Они изменили управление кодировками у findstr (в итоге сломали).

Код:
chcp 866 >nul
findstr /?

W10: выводит в 866 (норм)
W11: выводит в 1251 (каракули)
 

Код:
chcp 1251 >nul
findstr /?

W10: выводит в 866 (каракули)
W11: выводит в 1251 (норм)
 
в W10 и ранее можно было перед вызовом консольных подобных утилит менять кодировку под их дефолтную, а затем обратно под кодировку скрипта (костыль), а теперь в w11 это не работает, по крайней мере для findstr. надо разбираться как теперь поступать, проверил разные варианты для findstr и ни чего не вышло, она меняет все время на разные кодировки, в зависимости что ей подставляют, технологии будущего.

Всего записей: 1006 | Зарегистр. 12-12-2006 | Отправлено: 17:49 13-10-2021
Susie7



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

Цитата:
tasklist | find "witcher3.exe" && (taskkill /f /im witcher3.exe)

 
Не убивает ваш батник игру, ни разу. Ни  с ярлыка на рабочем столе, ни возле екзешника если запускать.
Опять меня обманули...
 


----------
Принцессы бывают не только в сказках

Всего записей: 786 | Зарегистр. 11-07-2018 | Отправлено: 19:41 13-10-2021
generator324

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

Цитата:
Опять меня обманули...  

Женщин всегда обманывают

Всего записей: 999 | Зарегистр. 11-01-2019 | Отправлено: 21:15 13-10-2021
Silver Raven

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, а cmd-шником можно узнать текущее разрешение экрана (если их несколько, то только того, который установлен как основной). Мне нужно эти данные воткнуть в конфиг.

Всего записей: 128 | Зарегистр. 12-10-2012 | Отправлено: 22:07 15-10-2021 | Исправлено: Silver Raven, 22:08 15-10-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

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

Рейтинг.ru