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

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

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

Код:
 
cd /d "ПУТЬ ДО\ФАЙЛА БРАУЗЕРА.ЕХЕ"
start "" "chrome.exe" --user-data-dir=UserData --disable-background-networking --disable-component-update --no-default-browser-check --disable-machine-id --disable-encryption --popups-to-tabs --close-window-with-last-tab=never --show-avatar-button=never --num-raster-threads=4 --disable-logging --disable-breakpad --disable-gpu-shader-disk-cache --disk-cache-dir=nul --disk-cache-size=l --aggressive-cache-discard --disable-gpu-program-cache --disable-gpu-shader-disk-cache --media-cache-size=l --disable-cache --disable-application-cache --disable-offline-load-stale-cache %1
 

 
UnGoogled.reg

Код:
 
Windows Registry Editor Version 5.00
 
[HKEY_CLASSES_ROOT\*\shell\UnGoogled]
"MUIVerb"="Chromium UnGoogled"
 
[HKEY_CLASSES_ROOT\*\shell\UnGoogled\command]
@="\"ПУТЬ ДО\\СКОМПИЛИРОВАННОГО.EXE\" \"%1\""
 

Всего записей: 217 | Зарегистр. 19-11-2022 | Отправлено: 21:30 17-07-2023 | Исправлено: Simple Code, 21:38 17-07-2023
motppc



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
E_123
Версии Bat To Exe Converter начиная с  3.x добавляют мусор в bat файлы

Всего записей: 261 | Зарегистр. 04-03-2012 | Отправлено: 21:38 17-07-2023
BorlandIMHO

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

Цитата:
Если Вы про прогу .bat > .exe

Я про "чюдо-браузер".
Хотя и не исключаю, что запуск через волшебный exe-батник может мешать "чюдо-браузеру" нормально отрабатывать параметр "сингл процесс"...
И вообще ни разу не понимаю, что мешает прописать в виндовые ассоциации непосредственно "чюдо-браузер", без "костылей" волшебного exe-батника.
А также - не могу понять, какое вообще отношение к топику про bat/cmd имеет весь вышеописанный кордебалет...
Проблемы с запуском/работой "чюдо-браузера" нужно, ИМХО, обсуждать в топике про "чюдо-браузер"...

Цитата:
кстати

И кстати из картинки (той, что чёрная и узкая) однозначно следует, что программа {более} не поддерживает использование ключа "сингл-процесс". О чём и сообщает, причём по-русски...

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

Всего записей: 2612 | Зарегистр. 12-10-2006 | Отправлено: 21:45 17-07-2023 | Исправлено: BorlandIMHO, 21:48 17-07-2023
greeple

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
E_123
Цитата:
ключом так добавил, выдаёт ошибку. Как это и где прописывать в Реестре не знаю

как "так добавил"? просто добавь ключ без %1, если у хромых в реестре на html и htm прописан такой запуск значит ключ должен работать
 
E_123
Цитата:
В общем не вижу на данный момент решения

главное решение не регистрировать браузер по умолчанию в батник который в exe, и вообще не регистрировать если он так запускается

Всего записей: 5389 | Зарегистр. 11-02-2020 | Отправлено: 21:46 17-07-2023
motppc



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

Всего записей: 261 | Зарегистр. 04-03-2012 | Отправлено: 21:50 17-07-2023 | Исправлено: motppc, 21:50 17-07-2023
greeple

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
у эджа и вивальди так
 --single-argument %1
может у всех хромых такой сейчас, его проверь, я просто на старом движке смотрел
 
Добавлено:
и да, можно было к html и htm прописать прямо в реестр запуск с ключами всеми которые тебе там надо, и всё, без батников всяких
 
Добавлено:
если там правда длина большая возможна, в этом я не уверен
 
Добавлено:
хотя может этот флаг и не нужен

Цитата:
Возвращает строку командной строки в правильном формате для оболочки Windows, заканчивающуюся заполнителем аргумента "--single-argument %1". Переключатель с одним аргументом предотвращает непредвиденный синтаксический анализ аргументов из другого программного обеспечения, которому нельзя доверять, чтобы избежать двойных кавычек при замене на заполнитель (например, последовательности вставки «%1», заполненные оболочкой Windows).
  ПРИМЕЧАНИЕ. Это необходимо использовать для генерации строки командной строки для оболочки, даже если эта командная строка была проанализирована из строки с правильным синтаксисом, потому что переключатель --single-argument не сохраняется во время синтаксического анализа.

Всего записей: 5389 | Зарегистр. 11-02-2020 | Отправлено: 21:53 17-07-2023
Simple Code

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может кому пригодится, сделал простое приложение, которое компилирует .BAT/.CMD в .EXE.
Портативная, не мусорит в системе, минимальный размер скомпилированного .EXE 4,50 КБ.
Скрипт должен быть в кодировке UTF-8.
На данный момент реализован выбор скрытого запуска скрипта. В будущем будет добавляться новые функции.
Сам скрипт распаковывается в директорию TEMP с рандомным именем, после завершения работы, удаляется.
Требования: NET Framework 4.7.2 и для скомпилированного EXE тоже.
Скачать
www.virustotal.com

Всего записей: 217 | Зарегистр. 19-11-2022 | Отправлено: 06:38 18-07-2023 | Исправлено: Simple Code, 06:38 18-07-2023
E_123



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Simple Code
Цитата:
Windows Registry Editor Version 5.00
 
[HKEY_CLASSES_ROOT\*\shell\UnGoogled]
"MUIVerb"="Chromium UnGoogled"
 
[HKEY_CLASSES_ROOT\*\shell\UnGoogled\command]
@="\"ПУТЬ ДО\\СКОМПИЛИРОВАННОГО.EXE\" \"%1\""
Большое спасибо, пробовал так:
   [HKEY_CLASSES_ROOT\*\shell\UC]
   "MUIVerb"="UC"
   [HKEY_CLASSES_ROOT\*\shell\UC\command]
   @="\"C:\\PO\\UC\\UC.exe\" \"%1\""
- ничего не изменилось, внешние ссылки всё также не открываются, по ним запускается пустая вкладка 2-ого/3-ого и т.д. экземпляра брауза.  
Здесь описал чем сделал UC.exe из исходного UC.bat и зачем.

Всего записей: 950 | Зарегистр. 05-03-2020 | Отправлено: 16:18 18-07-2023 | Исправлено: E_123, 19:42 18-07-2023
E_123



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
greeple
Цитата:
как "так добавил"? просто добавь ключ без %1
Пробовал - он даже в chrome://version почему-то не попадает, кстати этого --single-argumen в актуальном списке ключей хромиума нет: peter.sh/experiments/chromium-command-line-switches  - другой аналог надо знать, бегло не нашёл ничего такого.
Цитата:
если у хромых в реестре на html и htm прописан такой запуск
UC.exe указан в винде как брауз по умолчанию, но это ничего не даёт: внешние ссылки всё равно не открывает. В Реестр вносил как Simple Code советовал (если я правильно всё ввёл конечно) - не помогло.

Всего записей: 950 | Зарегистр. 05-03-2020 | Отправлено: 19:52 18-07-2023 | Исправлено: E_123, 19:59 18-07-2023
greeple

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
E_123
Цитата:
актуальном списке ключей хромиума

с чего ты взял что это актуальный список? потому что в шапках везде его напихали?

Всего записей: 5389 | Зарегистр. 11-02-2020 | Отправлено: 20:45 18-07-2023
dedulya68



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Simple Code (пост)
Цитата:
Может кому пригодится

Замечательно

Всего записей: 991 | Зарегистр. 22-12-2016 | Отправлено: 21:47 18-07-2023
351878



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

Цитата:
Версии Bat To Exe Converter начиная с  3.x добавляют мусор в bat файлы

это не мусор. в батнике внутри итогового exe этого "мусора" не будет!

Цитата:
В Реестр вносил

а что там вносить если Bat To Exe Converter все встраиваемые элементы в exe распаковывает в темп в папки с рандомным названием типа 84F7.tmp

Всего записей: 1202 | Зарегистр. 28-03-2016 | Отправлено: 21:55 18-07-2023
Simple Code

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
E_123
 
Ещё раз по порядку для понимания логики процесса.
Есть батник скомпилированный в ЕХЕ.
Этот ЕХЕ установлен в качестве браузера по умолчанию.
По двойному клику, по ярлыку (не HTML-файлу), который должен отрыть сайт, запускается этот скомпилированный ЕХЕ.
Получается, что этот ЕХЕ должен уметь принимать параметры передаваемые ярлыком и потом передавать эти параметры в качестве аргумента скрипту. Возможно в этой цепочке как раз и возникла данная проблема.
Скиньте Ваш готовый ЕХЕ, хочу посмотреть какая там логика (можете в л/с).

Всего записей: 217 | Зарегистр. 19-11-2022 | Отправлено: 23:37 18-07-2023
greeple

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Simple Code
http://forum.ru-board.com/topic.cgi?forum=2&topic=5915&start=20&limit=1&m=1#1

Всего записей: 5389 | Зарегистр. 11-02-2020 | Отправлено: 23:45 18-07-2023
Simple Code

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
greeple, E_123
 
Попробуйте такой вариант, с парсером параметров.
Как я понял, нужен ключ --app-id="тут закодированная ссылка на сайт".
Переменная %AppId% содержит закодированную ссылку.
Переменная %UserDataDir%, тут понятно, название говорит само за себя.

Код:
 
@echo off
REM Начало парсера
SetLocal EnableExtensions EnableDelayedExpansion
for %%a in (%*) do (
    set "str=%%~a"
    if /I not "!str:~-4!"==".exe" set /A count+=1
    if !count! EQU 1 (
        set "param=!param! "%%~a"
    )
    if !count! EQU 2 (
        set "param=!param! %%~a""
        set /A count=0
    )
)
for %%a in (%param%) do (
    for /F "Tokens=1,2,* Delims= " %%i in (%%a) do (
        if /I "%%~i"=="--user-data-dir" set "UserDataDir=%%~j %%~k"
        if /I "%%~i"=="--app-id" set "AppId=%%~j"
    )
)
REM Конец парсера
 
@start "" "Путь до файла\Chromium.exe" --user-data-dir="%UserDataDir%" --disable-gpu-shader-disk-cache --disk-cache-dir=nul --disk-cache-size=1 --disable-background-networking --disable-component-update --no-default-browser-check --disable-machine-id --disable-encryption --popups-to-tabs --close-window-with-last-tab=never --app-id=%AppId%
 

У себя протестировал, вроде работает, ярлыки с рабочего стола запускает.
P/s/ Для внимательных пояснение, с кавычками " не на путал, так должно быть.

Всего записей: 217 | Зарегистр. 19-11-2022 | Отправлено: 10:34 19-07-2023 | Исправлено: Simple Code, 10:45 19-07-2023
greeple

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Simple Code
не ну я то не пользуюсь, просто с его сообщения ссылку скопировал, даже не видел его
сейчас посмотрел, так он для скачки и создания батника лаунчера, и уже потом там создается батник, почему E_123 не написал сам батник загадка, было бы сразу понятно что не так

Всего записей: 5389 | Зарегистр. 11-02-2020 | Отправлено: 12:49 19-07-2023
greeple

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
по умолчанию 7z выдаёт таблицу по такому запросу листинга https://i.imgur.com/8jJGA5M.png
"%ProgramFiles%\7-Zip\7z.exe" l архив.зип  
мне нужно чтобы выдавало только последний столбец с name  
нашёл такой батник

Код:
@echo off
setlocal enabledelayedexpansion
set "arx=%*"
for /f "delims=:" %%a in ('""%ProgramFiles%\7-Zip\7z.exe" l "%arx%"|findstr/rn /c:"^---""') do set/a n+=1& set "v!n!=%%a"& set/a nd=v1+1& set/a kd=v2-1  
for /f "tokens=5*" %%a in ('"for /l %%a in (%nd%,1,%kd%) do @"%ProgramFiles%\7-Zip\7z.exe" l "%arx%"|find /n /v ""|find "[%%a]""') do echo %%b
pause>nul

он работает в принципе как надо, но можно ли его сократить как то и сделать так чтобы можно было добавить сразу в реестр, в контекстное меню, не бат, а прям туда прописать всю команду? можно конечно и этот бат прописать, но хотелось бы без него
 
ну и в буфер скопировать вывод | clip это понятно как, там в батнике я не добавлял пока это, но в этом был весь смысл, чтобы в контекстном меню по архивам был пункт "скопировать список файлов в архиве в буфер"

Всего записей: 5389 | Зарегистр. 11-02-2020 | Отправлено: 15:07 20-07-2023 | Исправлено: greeple, 15:08 20-07-2023
GCRaistlin



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

Цитата:
можно ли ... сделать так чтобы можно было добавить сразу в реестр

Корректно - нет: вы обращаетесь при включенном DE к %*, а там могут быть "!". Вообще, у вас и батник некорректно написан: %-раскрытие переменных с произвольным содержимым при включенном DE, %arx% при этом вдобавок неокавычено.
 
Добавлено:
В батнике это можно поправить, а в комстроке - нет.
 
Хотя нет, и в комстроке можно:

Код:
 
cmd /c set a=!! ^& cmd /v /c echo !a!
 

 
Так что - да, можно.

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

Всего записей: 4128 | Зарегистр. 18-04-2005 | Отправлено: 16:01 20-07-2023 | Исправлено: GCRaistlin, 16:10 20-07-2023
greeple

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

конкретно %* тут не суть, вот скрипт откуда я его взял https://www.cyberforum.ru/cmd-bat/thread1866694.html#post9848877  
добавил %* только для теста, чтобы дропом архива на батник проверить работает он корректно или нет
GCRaistlin
Цитата:
 а там могут быть "!"

не понял тут, в названиях\путях могут быть "!" ? не разу не встречал
GCRaistlin
Цитата:
Так что - да, можно.

а полный вариант можешь помочь корректно сделать? получить последний столбец в буфер, только названия
в батнике или без, сразу в один запрос чтобы в контекстное меню добавить
 
Добавлено:
GCRaistlin
Цитата:
%arx% при этом вдобавок неокавычено

где именно? вроде окавычены, или ты про вот это "arx=%*"? или их там надо экранировать чтобы кавычки были кавычками? не понятно, помоги балбесу корректно сделать
 
Добавлено:
как я понял и без enabledelayedexpansion можно сделать это да?
мне  главное понять как последний столбец взять без всего остального, я вот смотрю в эти циклы и т.д, пока сложно даже прочитать
 
Добавлено:
может в powershell есть какой вариант, чтобы удобнее это сделать
нету там такого, чтобы в такой таблице, powershell сам понял столбцы и можно было один взять?

Всего записей: 5389 | Зарегистр. 11-02-2020 | Отправлено: 16:52 20-07-2023
GCRaistlin



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

Цитата:
в названиях\путях могут быть "!" ? не разу не встречал

"Не встречал" не означает "не может быть".
 

Цитата:
а полный вариант можешь помочь корректно сделать?

Это плохая в целом идея. Код должен быть читабелен, тут - не будет.
 

Цитата:
где именно?

5-я строка. Посмотрите на кавычки. Понятно зачем так сделано - чтобы | окавыченным стало, но это неправильно. | здесь нужно эскейпировать (^|), а не окавычивать.
 

Цитата:
как я понял и без enabledelayedexpansion можно сделать это да?

Нельзя. У вас же неизвестно что в переменных.

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

Всего записей: 4128 | Зарегистр. 18-04-2005 | Отправлено: 17:31 20-07-2023
   

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