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

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

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

Maz (19-09-2020 13:36): Командная строка, батники, сценарии (bat, cmd) Часть 6  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

cchameleone



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
(часть 1) (часть 2) (часть 3) (часть 4)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ 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 (PDF). Курс лекций для начинающих
· Бокалий В. Командная строка (pdf-брошюрка в 20 страниц)
· Александров А., Дибров А. Урок bat-аники (pdf)
· Уильям Р. Станек - Командная строка Windows. Справочник администратора
 
· Скрываем консольные окна, Выполнение BAT-скриптов без вызова окна консоли
· cmdow — изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· blat — отправка почты из консоли
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)(3)

Всего записей: 2279 | Зарегистр. 16-10-2015 | Отправлено: 09:22 29-04-2016 | Исправлено: Maz, 08:47 26-03-2020
GCRaistlin



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

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

Я и привел. Свои предположения посчитал, ваши тоже надо, или сами справитесь?
 

Цитата:
Хотите сказать, что пользователь незнакомый с программированием, даже с учетом наличия комментариев, легко разберется в том кошмаре, который написан в вашем скрипте?

Пользователю это и не нужно. Ему достаточно совершить 3 простых шага, описанных в моем предыдущем посте, чтобы получить желаемое.
 

Цитата:
С таким подходом, ваш скрипт будет валиться на каждый чих, да ещё и безо всяких сообщениях об ошибках...

Мой скрипт будет валиться на каждый чих? Ну давайте, повалите его.
 

Цитата:
У формата XML существуют определенные правила написания, их требуется соблюдать, помимо простого копи-паста...

Видите, как быстро множатся ваши допущения и требования к пользователю.
 

Цитата:
В придачу к скрипту предлагаете распространять руководства по программированию, в комплекте со всеми сопутствующими справочниками? агащаз...

Да вас и писать его никто не неволил. Но вы вроде претендовали на создание альтернативы моему скрипту, а пока получился только набор "Сделай сам".
 

Цитата:
И это всё, что он выдает? Не лукавьте.

Сначала выдает что-то по делу (типа, что назаменял). Потом выдает это сообщение об ошибке. Вот полностью:
Подробнее...
 

Цитата:
Быть может ваш скрипт настолько интеллектуален, что умеет обрабатывать несуществующие пути?

Вот скрипт, которым запускается ваш. От начала до конца:

Код:
 
@echo off
powershell -c "&{.\script.ps1 -config '.\config.xml' -whatif}"
pause
exit /b
 

 

Цитата:
Вам перевести фразу:
"Cannot find path 'R:\Scripts\1' because it does not exist."
? Или воспользуетесь услугами гуглопереводчика самостоятельно?

Это ваша работа, как автора, не моя.
 

Цитата:
Прекращайте использовать описанный выше подход к использованию и всё у вас заработает без запинки.

Это единственный подход, который программисту позволительно предполагать у пользователя.

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

Всего записей: 4000 | Зарегистр. 18-04-2005 | Отправлено: 13:35 24-04-2019
iNNOKENTIY21



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

Цитата:
 у меня где-то в загашниках есть скрипт с транслитерацией

Можно его увидеть?

Всего записей: 3521 | Зарегистр. 16-08-2012 | Отправлено: 13:37 24-04-2019
GCRaistlin



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

Цитата:
 
v1.0.5
[-] Неправильно обрабатывалась ошибка, если полное имя файла состояло из одних
    кавычек.
 

 
Добавлено:
replace_last_occurrence.cmd

Цитата:
 
v1.0.6
[-] Неправильно обрабатывалась ошибка, если полный путь к файлу превышал допустимую
    длину.
 


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

Всего записей: 4000 | Зарегистр. 18-04-2005 | Отправлено: 15:18 24-04-2019
metatrop

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

Цитата:
 
https://docs.microsoft.com/ru-ru/windows/desktop/api/shellapi/nf-shellapi-commandlinetoargvw
 

Надо же, чего откопали. Однако сказанное остаётся в силе. Приложение получает полную строку. А эту функцию крайне редко какие программы используют. По результату поиска где-то 5% .exe с командной строкой её импортируют.
 

Цитата:
 
Странные у Вас проблемы. LUA на несколько порядков мощнее макросов FAR2. Если что-то можно было сделать там, значит можно и в LUA.
 

То что Lua мощнее - это понятно. Но и выглядит FAR с целой директорией скриптов вполне безобразно, грузится медленнее, и существенной необходимости во всём этом нет. Минусы перевешивают плюсы. Макросы FAR1/2 достаточно многое могут, остальное делают плагины и внешние скрипты (для которых Lua малопригоден).
 
Имелось в виду, что не встречал большинства макросов, полезных для себя (да и для других тоже - речь не идёт о чём-то особо специфическом), уже написанных кем-то для FAR3, хотя пытался отыскать хорошие идеи.

Всего записей: 314 | Зарегистр. 17-09-2010 | Отправлено: 16:40 24-04-2019 | Исправлено: metatrop, 16:49 24-04-2019
Smitis



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

Цитата:
Но и выглядит FAR с целой директорией скриптов вполне безобразно

Ага, а с кучей записей в реестре не безобразно? Приходилось всё равно держать макросы в файлах (не reg!) для удобства и экспортировать скриптом (я даже выкладывал на форуме скрипт на kixtart переводящий более удобный псевдоязык для макросов в reg-файлы и экспортировавший их). Так что lua для этих целей лучше Кстати, первые версии FAR3 хранили макросы в базе SQL и это было ничем не лучше реестра.
Вот, например, в этом
Цитата:
AltJ
Переход на file/reg/url/repo по строке из буфера обмена, т.е. по файловому маршруту, по пути реестра Windows, по URL http/https - вызов интернет-проводника, по хэшу в репозитории git или hg - commit открывается в редакторе. (аналогично AltJ работает из редактора, просмотра или из режима захвата с экрана, вызванного под панелями/редактором/просмотром; если в редакторе или в режиме захвата выделен некий текст, то он используется в качестве адреса вместо содержимого буфера обмена)
не вижу ничего сверхъестественного для lua. Например, я люблю хранить ссылки в описаниях файлов, и есть макрос выбирающий ссылки из описания и вызывающий меню выбора ссылки из которого можно либо скопировать ссылку в буфер, либо вызвать дефолтный браузер, либо перейти в меню выбора браузеров, либо тут же отредактировать меню (удалить ссылку, вставить, изменить). То же меню вызывается из редактора. Хотел доработать до возможности перехода по файловой системе, но отложил за не особой надобностью. Тот же скрипт стоит на ассоциациях файлов для url - выбрать браузер или скопировать ссылку. В общем, ничего сложного. Тут всё дело в желании.

Цитата:
уже написанных кем-то для FAR3

А никто и не будет писать. Точнее пишут, но для себя. Выкладывать в открытый доступ подобные вечно дорабатываемые под свои нужды поделки никто не торопится, по моему, из-за своей специфичности и индивидуальности. Любой чужой макрос всё равно приходится допиливать напильником под свои нужды.

Цитата:
остальное делают плагины и внешние скрипты (для которых Lua малопригоден)

Внешние скрипты никто не отменяет, а вот для плагинов lua уже вполне себе пригоден.
 
Добавлено:

Цитата:
Надо же, чего откопали.

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

Цитата:
Приложение получает полную строку.

КО мне подсказывает - даже дотнетовская программа получает полную строку.

----------
Разум когда-нибудь победит

Всего записей: 3219 | Зарегистр. 09-02-2003 | Отправлено: 18:24 24-04-2019 | Исправлено: Smitis, 18:31 24-04-2019
metatrop

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

Цитата:
 
Ага, а с кучей записей в реестре не безобразно?
 

Очень удобно и компактно. При одном условии. Файл реестра быть "исходником" с ;комментариями. И без всяких "Description"="", которые становятся ненужными. Макросы занимают по одной строке, иногда длинной. Очень удобно искать, заменять (в т. ч. регулярными выражениями), просматривать, копировать фрагменты, менять клавиши и т.п.
 
Сложных длинных макросов немного, они преобразуются автоматически из реестрового формата в текстовый и обратно (Perl-скрипт). Даже многострочность не теряется (перенос строки и отступ отображается в более чем один пробел подряд в реестре.
 
Я дело говорю, потому что работаю и со скриптами, и совсем не хотел бы иметь десятки и сотни файлов на макросы. А так есть только один файл FAR.REG или FAR2.REG, на полторы сотни килобайт, и в нём сотни макросов. Макроязык FAR несравненно лаконичнее. Очень удобно сравнивать через diff старые, новые, модифицированные версии единого .REG файла настроек и макросов.
 

Цитата:
 
первые версии FAR3 хранили макросы в базе SQL и это было ничем не лучше реестра.
 

Это неизмеримо хуже. А использование SQL порождает массу проблем, которых с реестром нет.
 

Цитата:
 
не вижу ничего сверхъестественного для lua
 

И я тоже, а Вы просто неправилльно поняли мой посыл. Если хотите его опровергнуть, то приведите ссылку на такой макрос на форуме FAR или в какой-нибудь выложенной сборке, чтобы там распознавались и файловые маршруты, и URL, и пути в реестр, и, в особенности, git и hg. Последнее чрезвычайно удобно. В редакторе открывается лог commit'ов, выделяется хэш, нажимается AltJ, и в другом окне редактора отрывается commit, c адекватной подсветкой для diff.
 

Цитата:
 
Выкладывать в открытый доступ подобные вечно дорабатываемые под свои нужды поделки никто не торопится
 

Это верно, но вот для FAR1/2 всё есть именно в открытом доступе, по приведённой выше ссылке.
 

Цитата:
 
а вот для плагинов lua уже вполне себе пригоден
 

Да, он хорош, но для FAR - избыточен, необязателен. Нет такого, чтобы вот прямо чувствовался какой-то "потолок возможностей" макросов FAR1/FAR2.
 

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

Экспортируют?
Первый раз "пробежался" по 600+ .exe файлов и получилось меньше 5%. Другой поиск, среди msys/git/ffmpeg/прочих unix-портов: 112 .exe файлов, из них 6 её импортируют, тоже чуть более 5%.
 
Или, более объективно. В каталоге Windows Server 2003 32-bit PAE \System32\ , из 337 .exe файлов, эту функцию импортируют 19. Те же 5 процентов. С/C++ runtime библиотеки msvcrt.dll msvcr100.dll её не импортируют, хотя экспортируют __argv.
 
И вообще, CommandLineToArgvW() экспортируется из SHELL32.DLL, то есть даже не из ядра Windows. Она не поддерживается в Windows 95. Адекватные программы, если им не надо чего-то важного сверх функционала Win9x, не будут эту функцию использовать.

Всего записей: 314 | Зарегистр. 17-09-2010 | Отправлено: 19:16 24-04-2019 | Исправлено: metatrop, 20:03 24-04-2019
Smitis



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

Цитата:
Я дело говорю, потому что работаю и со скриптами, и совсем не хотел бы иметь десятки и сотни файлов на макросы. А так есть только один файл FAR.REG или FAR2.REG, на полторы сотни килобайт, и в нём сотни макросов

И я дело говорю. И я тоже работаю со скриптами. И все макросы lua можно поместить в один скрипт и всё будет также, как и для reg, только проще, так как не нужно подстраиваться под "синтаксис" reg, не надо возиться с промежуточными файлами, преобразующими скриптами (проходили!), всё портабельно, можно закидывать папку с ФАРом на другой комп и сразу запускать со всеми настройками без промежуточных телодвижений, держать ФАР на флешке, синхронизировать копии ФАРа простыми copy/xcopy/robocopy и т.д. Даже не знаю.. Ну представьте, что все скрипты cmd, ps1, vbs нужно было бы хранить в реестре, туда-сюда их экспортировать-импортировать и пр.

Цитата:
Если хотите его опровергнуть, то приведите ссылку на такой макрос на форуме FAR или в какой-нибудь выложенной сборке, чтобы там распознавались и файловые маршруты, и URL, и пути в реестр, и, в особенности, git и hg. Последнее чрезвычайно удобно. В редакторе открывается лог commit'ов, выделяется хэш, нажимается AltJ, и в другом окне редактора отрывается commit, c адекватной подсветкой для diff.

Боюсь, такой макрос нужен только Вам. Как я уже говорил - всё очень индивидуально. Хотите макрос для работы с ссылками из description и редактора? Можно доработать и до распознавания файловых путей и реестра.

Цитата:
Это верно, но вот для FAR1/2 всё есть именно в открытом доступе, по приведённой выше ссылке.

Для FAR3 тоже всё в открытом доступе. Всё на самом деле не так плохо, как я описываю. Люди макросами делятся. А я сейчас выложу свою копию ФАРа, дам ссылку и скажу - смотрите, всё что мне нужно тоже в открытом доступе. Хотите?

Цитата:
Да, он хорош, но для FAR - избыточен, необязателен. Нет такого, чтобы вот прямо чувствовался какой-то "потолок возможностей" макросов FAR1/FAR2.

Мы говорили о плагинах. Не о макросах. На lua можно писать скрипты как замену плагинов, так и отдельные плагины, где "движок" тот же, что и для LuaMacro, а начинка своя на lua. Не нужно возни с компиляторами, студиями и прочим.

Цитата:
Нет такого, чтобы вот прямо чувствовался какой-то "потолок возможностей" макросов FAR1/FAR2.

Попробуйте на макроязыке создать диалог. Или обработать текст с помощью регулярных выражений.

----------
Разум когда-нибудь победит

Всего записей: 3219 | Зарегистр. 09-02-2003 | Отправлено: 22:06 24-04-2019
metatrop

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

Цитата:
 
И я дело говорю. И я тоже работаю со скриптами.
 

Разница в том, что Вы не работали с .reg-файлом как с единым исходником, без всяких попыток напрямую редактировать реестр (что действительно крайне неудобно). А тут просто идеальный вариант - все настройки в одном файле. Можно сравнить с другой версией и увидеть, какие строки-макросы или строки-настройки изменились.
 

Цитата:
 
всё портабельно, можно закидывать папку с ФАРом на другой комп и сразу запускать со всеми настройками без промежуточных телодвижений
 

Ещё бы, это и есть посыл создания FAR3. Преимущество налицо, но его значимость невелика, если речь не о работниках, обслуживающих много компьютеров. Запустить .bat файл, загружающий настройки в реестр, нетрудно. Ну разве что если особые ограничения учётной записи, наличие настроек уже установленного FAR и т.п. У меня  таких случаев не было, и едва ли будут, и такой аргумент в пользу FAR3 слишком слаб.
 
FAR нужен для работы на своей машине/машинах, в первую очередь. Большинству.
 

Цитата:
 
И все макросы lua можно поместить в один скрипт и всё будет также, как и для reg
 

Не будет так же. Скорее всего, жуткая неразбериха будет. Громоздкий Lua код каждого макроса займёт куда больше одной строки, на экране не будет видно сразу много макросов подряд и т.д.
 

Цитата:
 
 Ну представьте, что все скрипты cmd, ps1, vbs нужно было бы хранить в реестре, туда-сюда их экспортировать-импортировать и пр.
 

Ну вот видите, у Вас просто нет аналогичного опыта, отсюда и непонимание. Нет никакого туда-сюда. Есть только туда. В реестре ничего "хранить" не надо! Хранится всё в текстовом .reg файле, с комментариями, и вся работа - только с ним.
 
Преимущества единого файла в случае макроязыка FAR1/2 vs FAR3 Lua очень значительны, и достаточно подробно их перечислил. Просто Вы их не ощутили на опыте, потому что, видимо, пытались редактировать реестр или использовать какие-то безумные плагины для работы с макросами, вместо работы с единым текстовым исходником (без всякого лишнего, с комментариями).
 

Цитата:
 
не надо возиться с промежуточными файлами, преобразующими скриптами (проходили!)
 

В 95% случаев это и в случае единого .reg файла не надо. Всё правится прямо в нём, тем более, что в FAR2 Colorer есть даже подсветка синтаксиса макроязыка прямо в реестровых текстовых файлах! Исключением являются редкие случаи начального создания или серьёзного изменения действительно длинных макросов. Это нужно очень нечасто. Ну и промежуточных файлов не надо, потому что преобразующий скрипт умеет работать не только с файлами, но также с буфером обмена.
 

Цитата:
 
Боюсь, такой макрос нужен только Вам. Как я уже говорил - всё очень индивидуально. Хотите макрос для работы с ссылками из description и редактора? Можно доработать и до распознавания файловых путей и реестра.
 

Знакомый метод полемики... Но неужели универсальный макрос перехода по адресу нужен только одному человеку? А вот Ваш случай да, он куда более специфический, хотя ссылки в описаниях действительно полезны. (Но какая тут может быть доработка, это слишком разные вещи!).
 

Цитата:
 
А я сейчас выложу свою копию ФАРа, дам ссылку и скажу - смотрите, всё что мне нужно тоже в открытом доступе.
 

Конечно выкладывайте, и с макросами и с плагинами. Это очень интересно. Только субъективизм тут ни при чём. Надо всё же уметь различать "только мне нужно" (такое и у меня есть) от достаточно широко полезных вещей, которые не будут доступны при переходе на FAR3.
 

Цитата:
 
Мы говорили о плагинах. Не о макросах.
 

Да, знаю, что есть LuaFAR. Lua избыточен и для плагинов тоже. Точнее, ценность его для плагинов, при условии знания C++, - сомнительна. Получается дублирование API. Зачем изучать и то, и другое? Ситуация знакомая по эмуляторам серверов World of Warcraft. Хотя на Lua, конечно, многое проще пишется. Однако, скорость не та, а это для плагинов часто бывает важно.
 

Цитата:
 
Попробуйте на макроязыке создать диалог. Или обработать текст с помощью регулярных выражений.
 

Зачем? В какой именно универсально полезной операции без этого не обойтись? Регулярные выражения прекрасно выполняются внешними скриптами, а захват их вывода в редактор гораздо удобнее генерации информационных диалогов - всё гораздо легче ищется и копируется. Поэтому, хотя Lua и мощнее, на практике потолок не ощущается, с учётом всех возможностей и альтернатив в способах реализации. А вот до появления макроязыка FAR он ощущался, и ещё как.

Всего записей: 314 | Зарегистр. 17-09-2010 | Отправлено: 23:45 24-04-2019 | Исправлено: metatrop, 01:07 25-04-2019
Smitis



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

Цитата:
Разница в том, что Вы не работали с .reg-файлом как с единым исходником

Как это не работал? Работал, очень не удобно, в отличие от "чистого" текста с макросами.

Цитата:
Ну вот видите, у Вас просто нет аналогичного опыта, отсюда и непонимание.

Именно на основе личного опыта и говорю. Формат reg-файла неудобен для хранения данных. В результате перешёл на хранение макросов в виде отдельных файлов на неком псевдоязыке. Собиралось и экспортировалось в реестр всё одним небольшим скриптом. Теперь такая необходимость отпала - все отлично структурируется, распределяется по файлам, папкам... Красота и порядок.

Цитата:
Знакомый метод полемики... Но неужели универсальный макрос перехода по адресу нужен только одному человеку?

Мне нужен. Я его написал. Допиливаю по мере необходимости.

Цитата:
Не будет так же. Скорее всего, жуткая неразбериха будет. Громоздкий Lua код каждого макроса займёт куда больше одной строки, на экране не будет видно сразу много макросов подряд и т.д.

Вы храните всё в одном reg-файле с комментариями. В lua Вы тоже можете хранить всё в одном файле с комментариями. В reg-файле у Вас каждый макрос в одной строке. Но и в lua Вы можете писать каждый макрос в одну строку! Так что, не аргумент.

Цитата:
В какой именно универсально полезной операции без этого не обойтись?

А в какой универсально-полезной операции нужен ФАР с его интерфейсом? Можно обойтись и без ФАРа. Также и с диалогами и меню. Можно обойтись и без них, а можно улучшить интерфейс для своих скриптов.

Цитата:
Регулярные выражения прекрасно выполняются внешними скриптами, а захват их вывода в редактор гораздо удобнее генерации информационных диалогов - всё гораздо легче ищется и копируется.

Зачем нужны внешние утилиты и скрипты, когда "всё из коробки"? Зачем что-то захватывать, когда Вы просто работаете с вызовами api как в любом нормальном редакторе с поддержкой макросов/скриптов/плагинов на каком-нибудь js, python и прочем?

Цитата:
Точнее, ценность его для плагинов, при условии знания C++, - сомнительна.

Преимущество то же, что и в использовании всяких скриптовых технологий (cmd, ps, wsh) вместо использования компиляторов. В самом деле, зачем знать cmd (плюс штатные утилиты командной строки), powershell, vbs если достаточно знания C++?

----------
Разум когда-нибудь победит

Всего записей: 3219 | Зарегистр. 09-02-2003 | Отправлено: 11:25 25-04-2019
metatrop

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

Цитата:
 
Работал, очень не удобно, в отличие от "чистого" текста с макросами.
 

Да ладно, половина макросов - это же просто вызовы клавиш. И они почти идеально смотрятся в едином .reg файле. Так же как и простые данные - переменные настроек, в своих ветках. Удобнее был, возможно, только .ini файл, но его надо загружать и разбирать при старте программы.
 
С .reg файлом, перекопированным из реестра, без комментариев, с лишним "мусором", не структированным по-своему - да неудобно.
 

Цитата:
 
В результате перешёл на хранение макросов в виде отдельных файлов на неком псевдоязыке.
 

Вот это и представляется неудобным и усложнённым. Смотрите же сами: глобальный поиск и замена каких-либо конструкций в макросах превращаются в операцию с многими файлами, которая выполняется из панелей, вследствие чего не видишь полноценно контекста замены, в отличие от редактора. Не можешь прервать, осмотреться, подправить и продолжить с того же места. Однофайловость даёт очень серьёзные преимущества в плане обзорного поиска, манипуляций с частями текста,  и в плане сравнения разных версий файла настроек.
 
Если код на макроязыке не слишком длинный, то нет затруднений с его редактированием прямо в .reg файле. Во всяком случае таков мой опыт. Исключение - действительно длинные макросы. В принципе, их преобразование можно парой макросов автоматизировать так, что оно будет сводится к нажатию нескольких клавиш и открытию дополнительного окна редактора.
 

Цитата:
 
В reg-файле у Вас каждый макрос в одной строке. Но и в lua Вы можете писать каждый макрос в одну строку! Так что, не аргумент.
 

В Lua макрос в одну строку будет почти всегда нечитаем и неоперабелен без преобразования, кроме, разве что, простых последовательностей клавиш. А на макроязыке макросы лаконичны, читаемы и операбельны в 95% случаев (при наличии опыта).
 
В актуальном FAR3 трудно найти Lua-скрипты, которые не были бы монстрообразными (оборотная сторона преимуществ Lua по возможностям), а на макроязыке такие составляют основную часть.
 
Ну и единого файла настроек ведь всё равно не получится. Будет единый малооперабельный файл макросов, а это не то, что нужно.
 

Цитата:
 
А в какой универсально-полезной операции нужен ФАР с его интерфейсом? Можно обойтись и без ФАРа. Также и с диалогами и меню. Можно обойтись и без них, а можно улучшить интерфейс для своих скриптов.
 

Почти всё, что требует интерфейса есть в самом FAR и в плагинах. В остальном интерфейс практически нигде не нужен, да. Для представления данных в виде сложных диалогов он не нужен, потому что форматированный текст удобнее. Например, MediaInfo как плагин с интерфейсом гораздо менее удобен и менее информативен, нежели захват вывода от MediaInfo.exe. Единственное, кажется, исключение - это что-то очень простое, когда открывать просмотр/редактор неуместно, а хочестся видеть файлы на панелях. В FAR1/FAR2, например такое: нажать на SymLink, и вывести небольшим Prompt-окном (редактор строки) маршрут, на который указывает ссылка; по ENTER - выход с копированием маршрута в буфер обмена, по Esc - выход без копирования. В более  сложных случаях лучше в редактор вывод захватывать, а там уже полнота возможностей.
 

Цитата:
 
Преимущество то же, что и в использовании всяких скриптовых технологий (cmd, ps, wsh) вместо использования компиляторов.
 

Это всё скрипты, работающие из командной строки. cmd и ps дают много возможностей, ориентированных на командную строку, ps и wsh - дают доступ к особенностям Windows. Но плагины не вызываются из командной строки (речь не о префиксах). Преимущества Lua в другом - отсутствие статической типизации, динамическое конструирование данных, защита от ошибок. Но для плагинов это всё не особо важно, в отличие от скриптов. У плагинов FAR мало общего с типичными скриптами (не только командной строки).

Всего записей: 314 | Зарегистр. 17-09-2010 | Отправлено: 12:49 25-04-2019 | Исправлено: metatrop, 13:04 25-04-2019
Sisin



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

Код:
"%ProgramFiles%\WinRAR\rar.exe" a -r -ep1 -m5 -rr3p -- Backup.rar @"C:\[PORTABLE]\BACKUP\Backup.lst"  

 
Можно как-то заменить абсолютный путь "C:\[PORTABLE]\BACKUP\Backup.lst" на относительный?? Оставляя просто "Backup.lst" не срабатывает команда. Все лежит в одной папке.

Всего записей: 996 | Зарегистр. 07-05-2010 | Отправлено: 13:17 25-04-2019 | Исправлено: Sisin, 13:18 25-04-2019
Smitis



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

Цитата:
Конечно выкладывайте, и с макросами и с плагинами.

Ок https://yadi.sk/d/e-MKQMvxFtrPbQ
Версия портабельная. Запуск через PAM.exe - запускается версия в зависимости от разрядности системы через ConEmu. Не портабельный момент - шрифт используемый в ConEmu (так и не решил, как лучше с ним поступить). Основные настройки ФАРа хранятся в папке программы, история - в профиле пользователя в отдельных поддиректориях (можно придраться, что это не портабельно, но есть причины делать так). По отдельности для запуска фара предусмотрен far-start.cmd, устанавливающий некоторые переменные среды. Всякие внешние программы, на которые рассчитана сборка не вкладываю.
Раньше выкладывал сборку с инсталятором для "быстрого развёртывания" или обновления уже существующей сборки, но за отсутствием спроса бросил.

Цитата:
Вот это и представляется неудобным и усложнённым.

Мне, как программисту, непонятно стремление запихнуть весь код в один исходник. Тут все бьются над тем, как для упрощения разбить код на модули для удобства использования/отладки, Вы же движетесь совершенно в противоположном направлении. Вот нафига мне делать поиск по всем исходникам, если я сейчас отлаживаю, скажем, редактор переменных среды? Нафига мне делать какие-то "глобальные замены"? Что там в макросах нужно такого глобально менять каждый раз при редактировании?

Цитата:
В Lua макрос в одну строку будет почти всегда нечитаем и неоперабелен без преобразования, кроме, разве что, простых последовательностей клавиш. А на макроязыке макросы лаконичны, читаемы и операбельны в 95% случаев (при наличии опыта).

В reg-файле, ага, как же, читаемы. Простые (которые простая последовательность клавиш) да читаемы, а сложные - нечитаемые совершенно и требуют преобразования в что-то более нормальное. А при наличии опыта и однострочный lua читается великолепно. В макроязыке, кстати, в принципе, те же структурные операторы, что и lua, только с другим синтаксисом. В чём проблема чтения, не понимаю.

Цитата:
Но плагины не вызываются из командной строки.

В командной строке ФАРа - легко. Через CtrlG - легко. Код lua в командной строке ФАРа (в том числе и в пользовательском меню) - легко.

Цитата:
Это всё скрипты, работающие из командной строки.

Речь про программы, использующие скрипты для расширения своего функционала применением скриптовых технологий. Любой приличный редактор такое позволяет. Чем ФАР хуже?
 
Добавлено:
 
Sisin

Цитата:
Можно как-то заменить абсолютный путь "C:\[PORTABLE]\BACKUP\Backup.lst" на относительный?? Оставляя просто "Backup.lst" не срабатывает команда. Все лежит в одной папке.

Возникает вопрос, относительно чего? Если относительно командного файла, который в [PORTABLE], то "%~dp0BACKUP\Backup.lst"

----------
Разум когда-нибудь победит

Всего записей: 3219 | Зарегистр. 09-02-2003 | Отправлено: 13:26 25-04-2019 | Исправлено: Smitis, 13:30 25-04-2019
YuS_2



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

Цитата:
Навскидку: shod как обратно преобразуете? В "шод" (возможно, какое-то сокращение) или в "сход" (существительное)?

Эмм, не совсем так... и конечно, есть огрехи в транслитерации, буковок-то, всё же, маловато будет... но код более-менее рабочий.  
Вот, собственно (без купюр, дорабатывать не стал код приведен в соответствие с ГОСТ 7.79-2000 тип Б, as is в общем):
script.ps1 (транслит)
 
GCRaistlin
 24-04-2019
 

Цитата:
Ну давайте, повалите его.


Цитата:
Видите, как быстро множатся ваши допущения и требования к пользователю.

Замнем, для ясности... абсолютно нет желания заниматься "писькоизмерениями".
 

Цитата:
Сначала выдает что-то по делу (типа, что назаменял). Потом выдает это сообщение об ошибке. Вот полностью:  
Подробнее...  

Сообщение не об ошибке скрипта, а о ВАШЕЙ ошибке - чувствуете разницу? При этом, отрабатывает те параметры, которые заданы верно. Что ещё не так-то?
 

Цитата:
Это ваша работа, как автора, не моя.

Чего-чего? Где-то было сказано, что скрипт будет отрабатывать глупые задачи, такие как несуществующие пути? Он ведь вам ясно написал, что к чему... а то, что не по-русски, так это ССЗБ, как говорится... используйте русскоязычную ОС и не придется ломать голову над переводом
 

Цитата:
Это единственный подход, который программисту позволительно предполагать у пользователя.

А это как вам будет угодно. Ни указывать, ни переубеждать не буду точно...
 
iNNOKENTIY21
 24-04-2019

Цитата:
Можно его увидеть?

Да, вот, откопал... чуть выше под морем.
Но, по-моему, он не совсем закончен... Хотя, на первый взгляд работает вроде... не помню уже для чего делал его и всё ли там верно, досконально не проверял.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 17:17 25-04-2019 | Исправлено: YuS_2, 09:41 27-04-2019
Smitis



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

Цитата:
буковок-то, всё же, маловато будет

Кодирование с потерей информации

----------
Разум когда-нибудь победит

Всего записей: 3219 | Зарегистр. 09-02-2003 | Отправлено: 18:25 25-04-2019
YuS_2



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

Цитата:
Кодирование с потерей информации

да, как минимум, ёйэъь - теряются, но как вариант, можно и их приспособить, если задействовать, скажем "`" как мягкий знак, а в сочетании с другими символами привести их к требующимся конечным преобразованиям...  
Просто доделывать лень, да и тому, кому надо было, интереса так и не проявил...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 19:28 25-04-2019
Smitis



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

Цитата:
но как вариант, можно и их приспособить, если задействовать, скажем

Тут проблема не какую кодировку придумать, с этим проблем нет (есть даже стандарт по которому имена на латиницу переводят, например, в загранпаспортах). Тут проблема в том, что люди транслитерируют каждый в меру своей фантазии. Например, x (зкс) вместо х, H (эйч) вместо Н и пр. и пр. Много чего придумывают.


----------
Разум когда-нибудь победит

Всего записей: 3219 | Зарегистр. 09-02-2003 | Отправлено: 20:00 25-04-2019
YuS_2



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

Цитата:
Тут проблема не какую кодировку придумать, с этим проблем нет (есть даже стандарт по которому имена на латиницу переводят, например, в загранпаспортах).

Есть. И даже ГОСТ на то существует... как говорится, дело было вечером, делать было нечего... вот я и привел скрипт к этому стандарту  25-04-2019.
Теперь единственный недостаток - это нет заглавных Ь и Ъ (по объективным причинам, таков уж ГОСТ), но насколько мне не изменяет мой склероз, то в русском языке не существует таких слов, которые начинались бы на эти буквы, т.е. заглавные и не нужны...
 

Цитата:
 Тут проблема в том, что люди транслитерируют каждый в меру своей фантазии.

А теперь это можно не учитывать и всем говорить:  
- Что-то не совпадает в вашей транслитерации? Посмотрите в стандарт, там всё есть.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 20:53 25-04-2019
Wu Tang



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

Код:
 
chcp 1251
start cmd /c ""c:\Program Files\7-Zip\7z.exe"" a -ssw -mx0 h:\Skype.bak\Data_%DATE:~0,2%.%DATE:~3,2%.%DATE:~-4%.7z c:\skype\data
start cmd /c ""c:\Program Files\7-Zip\7z.exe"" a -ssw -mx0 h:\Skype.bak\Skype™7.41.32.101_%DATE:~0,2%.%DATE:~3,2%.%DATE:~-4%.7z c:\skype\Skype™7.41.32.101
 

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

----------
Всему свое время и каждому свой час!
Хочешь жить - умей вертеться!

Всего записей: 3788 | Зарегистр. 15-10-2007 | Отправлено: 21:13 25-04-2019
YuS_2



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

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

у команды есть встроенная помощь:

Код:
start /?

 
примерно так:

Код:
start "" cmd /c ... /wait

где ... - ваша командная строка

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 21:33 25-04-2019
Wu Tang



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

----------
Всему свое время и каждому свой час!
Хочешь жить - умей вертеться!

Всего записей: 3788 | Зарегистр. 15-10-2007 | Отправлено: 00:22 26-04-2019
   

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

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Maz (19-09-2020 13:36): Командная строка, батники, сценарии (bat, cmd) Часть 6


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru