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

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

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

Цитата:
 
... ограничения cmd.exe с ограничениями парсера в части длины комстроки: оно есть и парсера, но не 8192 (или 8191), а 32767.
 

Парсера, если имеется в виду разбиение на отдельные аргументы, в Windows нет на уровне системных функций. Приложение получает целую строку и разбивает её на аргументы так, как посчитает нужным. Правда, если программа написана на C/C++, то обычно создатели программ не пишут собственный парсер, а используют результат работы стандартного (из библиотеки компилятора). У него есть неприятная особенность, выявляющаяся при подстановках переменных-маршрутов, когда "C:\DIR\" считается незакрытой строкой, где после буквы R следует кавычка.
 

Цитата:
 
Нужно изучать Lua, разбираться с SQL... Никак себя не заставить вот уже много лет.  
 

Зная хорошо и Lua, и SQL, для себя рассматриваю FAR3 как совершенно неприемлемую вещь. По длинному ряду разных причин. Хотя, конечно, кому что нужно... особенно, если не знать/не ценить всех возможностей плагина S&R, отсутствия задержек в работе colorer4ever по сравнению с take5/FarColorer; под FAR3 эти плагины не работают вполне нормально и корректно, несмотря на формальную поддержку ANSI-плагинов.
 

Цитата:
 
скрипт PS запускается так же мгновенно, как скрипт cmd.exe?
 

miniperl.exe запускается столь же мгновенно, что и cmd.exe, работает всюду, начиная с Windows 95 (нужен только один .exe файл), по скорости и по возможностям обработки строк намного превосходит PS (например, в regexp заменах можно задавать динамический код, вычисляющий заменяющую строку, вместо простого склеивания константных строки и переменных захвата). Правда, Perl - далеко не самый очевидный язык, если говорить о полноценном освоении. Но тем, кому нравятся своеобразие и "сложная простота" cmd.exe, он должен подходить.
 

Цитата:
 
Надо уж сначала допилить в Двойке. И вот... сижу в Двойке. С недопиленными
 

А я вот использую FAR1 и FAR2 в максимально продвинутом состоянии, с сотнями отлаженных макросов, полноценного аналога большинству которых в FAR3 не вижу. В частности:
 

Код:
 
AltJ
Переход на file/reg/url/repo по строке из буфера обмена, т.е. по файловому маршруту, по пути реестра Windows, по URL http/https - вызов интернет-проводника, по хэшу в репозитории git или hg - commit открывается в редакторе. (аналогично AltJ работает из редактора, просмотра или из режима захвата с экрана, вызванного под панелями/редактором/просмотром; если в редакторе или в режиме захвата выделен некий текст, то он используется в качестве адреса вместо содержимого буфера обмена)
 


Всего записей: 313 | Зарегистр. 17-09-2010 | Отправлено: 01:58 24-04-2019 | Исправлено: metatrop, 01:59 24-04-2019
GCRaistlin



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

Цитата:
miniperl.exe запускается столь же мгновенно, что и cmd.exe, работает всюду, начиная с Windows 95 (нужен только один .exe файл)

Один exe-файл - это очень много. Серьезно. А в общем, извращаться с регэкспами нравится.
 
replace_last_occurrence.cmd

Цитата:
 
v1.0.4
  • Чуть улучшена производительность.
     


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

    Всего записей: 3999 | Зарегистр. 18-04-2005 | Отправлено: 02:48 24-04-2019 | Исправлено: GCRaistlin, 15:17 24-04-2019
    YuS_2



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

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

    Предполагать и располагать - не синонимы. Вы ведь свои рассуждения тоже не на фактах выстраиваете.
    А чудовищный синтаксис, этот термин ближе к cmd, т.к. он особенный. А у PS синтаксис не особо сильно зумудреный, во всяком случае для тех, кто знаком с каким-либо другим ЯП, кроме cmd...

    Цитата:
    Читабельно - аж жуть:

    У Вас трудности с переводом? Тогда зачем использовать нерусскую версию ОС? Чтобы жизнь малиной не казалась?
    Проблема в файле .xml, Вы создали его неверно.
    Пробуйте:
    http://rgho.st/private/7TTpX2bFw/8e620e5176657023576ce041796d787a

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



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

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

    ОДИН такой человек на этом форуме есть
     
    metatrop

    Цитата:
    Парсера, если имеется в виду разбиение на отдельные аргументы, в Windows нет на уровне системных функций.

    https://docs.microsoft.com/ru-ru/windows/desktop/api/shellapi/nf-shellapi-commandlinetoargvw

    Цитата:
    полноценного аналога большинству которых в FAR3 не вижу. В частности:

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

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

    Всего записей: 3217 | Зарегистр. 09-02-2003 | Отправлено: 09:50 24-04-2019 | Исправлено: Smitis, 09:58 24-04-2019
    sergiokapone



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Приветствую всех!  
    Знает ли кто консольную утилитку (или как реализовать в bat), которая может отсортировать список имен папок, набранных латиницей по транслитерированному  кириллическому алфавиту и записать это все дело в файл?  
     
    Пример.
    Имеются папки с именами

    Код:
     
    Aliev
    Cherchil
    Shalimov
    Smirnov
     

    Поскольку "Sh" -- это "Ш", то запись нужно поставить после "S"., ну и "Ch" -- это "Ч"...
    Должно быть отсортировано как:

    Код:
     
    Aliev
    Smirnov
    Cherchil
    Shalimov
     

     

    Всего записей: 556 | Зарегистр. 07-06-2011 | Отправлено: 09:59 24-04-2019 | Исправлено: sergiokapone, 10:18 24-04-2019
    GCRaistlin



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

    Цитата:
    Предполагать и располагать - не синонимы.

    Это вы к чему?
     

    Цитата:
    Вы ведь свои рассуждения тоже не на фактах выстраиваете.

    Я, когда планировал формат решения, исходил из того, что пользователь способен: а) запустить скрипт в окне консоли и прочитать выданную на экран справку, б) создать одноименный файл с расширением ini в каталоге со скриптом, в) открыть ini-файл и вставить в специально обозначенные места 2 или 3 строки. Тоже смелые, конечно, предположения, но произвольных допущений у меня все-таки меньше, чем у вас. Гораздо.
     

    Цитата:
    А у PS синтаксис не особо сильно зумудреный, во всяком случае для тех, кто знаком с каким-либо другим ЯП, кроме cmd...

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

    Цитата:
    Проблема в файле .xml, Вы создали его неверно.

    Взял шаблон из вашего же скрипта. Если он не работает путем прямого вырезания и ничего не сказано про требуемые дополнительные телодвижения, пользователь чем виноват?
     
    С вашими файлами:
    Подробнее...
     
    Smitis

    Цитата:
    ОДИН такой человек на этом форуме есть

    Их может быть сколько угодно, но исходить из предположения, что ЦА решения состоит исключительно из них - несколько опрометчиво.

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

    Всего записей: 3999 | Зарегистр. 18-04-2005 | Отправлено: 11:03 24-04-2019
    Smitis



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

    Цитата:
    Их может быть сколько угодно, но исходить из предположения, что ЦА решения состоит исключительно из них - несколько опрометчиво

    То была шутка (потому стоит смайлик). Вы этого человека встречали на этом форуме (носится со своими трубами). И он именно так и считает. Но этот случай клинический, лечению не подлежит (только принудительной эвтаназией).
     
    YuS_2

    Цитата:
    А у PS синтаксис не особо сильно зумудреный, во всяком случае для тех, кто знаком с каким-либо другим ЯП, кроме cmd...

    Мне когда-то давно пришло в голову определение для синтаксиса PS - синтаксический винегрет. Imho, очень точное
     
    sergiokapone

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

    Вряд ли такая существует в природе. Да и не возможно в принципе - латинских букв меньше русских и возникает НЕОПРЕДЕЛЁННОСТЬ обратного преобразования для сортировки, разве что только по предварительно составленному словарю ВСЕХ слов русского языка (и скорее всего не для всех слов будет однозначность).

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

    Всего записей: 3217 | Зарегистр. 09-02-2003 | Отправлено: 11:44 24-04-2019 | Исправлено: Smitis, 11:47 24-04-2019
    YuS_2



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

    Цитата:
    Это вы к чему?

    К тому, что ваши предположения также не имеют оснований, как и мои...
    Как пример этого, привожу ваше утверждение:

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

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

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

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

    Цитата:
    Взял шаблон из вашего же скрипта.

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

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

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

    Цитата:
    С вашими файлами:  
    Подробнее...

    И это всё, что он выдает? Не лукавьте.
    Быть может ваш скрипт настолько интеллектуален, что умеет обрабатывать несуществующие пути?
    Всё же установите себе русскоязычную ОС, там сообщения будут на русском, если у вас возникают трудности с переводом.  
    Хотя, предполагаю, что это не так, просто такой подход называется: "включить дурака" и ничего "не видеть" совсем.
    Вам перевести фразу:
    "Cannot find path 'R:\Scripts\1' because it does not exist."
    ? Или воспользуетесь услугами гуглопереводчика самостоятельно?
    А может быть у Вас вызывает трудности идентификация параметра:

    Код:
    <Source>.\1</Source>

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

    Цитата:
    Мне когда-то давно пришло в голову определение для синтаксиса PS - синтаксический винегрет. Imho, очень точное

    Очень даже может быть. Но тут главное - простота использования (особенно для целей администрирования), причем для пользователей любого уровня знаний в программировании. И это чаще плюс, чем минус.
    Естественно, что идеальных ЯП не существует, в принципе, у каждого есть свои особенности, недостатки и преимущества.  
    Но это, как раз, хорошо, что для решения разных задач, вполне возможно выбрать каждому способ решения по своему вкусу. Имхо.
     

    Цитата:
    Вряд ли такая существует в природе. Да и не возможно в принципе - латинских букв меньше русских и возникает НЕОПРЕДЕЛЁННОСТЬ обратного преобразования для сортировки, разве что только по предварительно составленному словарю ВСЕХ слов русского языка (и скорее всего не для всех слов будет однозначность).

    Ну, почему невозможно... транслитерация ведь существует в обе стороны. В принципе, в данном случае, ничего невозможного нет... у меня где-то в загашниках есть скрипт с транслитерацией, а прикрутить его к выборке каталогов, с одновременной транслитерацией, с последующей сортировкой в кириллице - вполне решаемо.
    Конечно, если задавшего вопрос, устроит решение на powershell... иначе получится сизифов труд...

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



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

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

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


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

    Всего записей: 3217 | Зарегистр. 09-02-2003 | Отправлено: 13:33 24-04-2019
    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

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

    Всего записей: 3999 | Зарегистр. 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, хотя пытался отыскать хорошие идеи.

    Всего записей: 313 | Зарегистр. 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 уже вполне себе пригоден.
     
    Добавлено:

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

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

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

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

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

    Всего записей: 3217 | Зарегистр. 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, не будут эту функцию использовать.

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

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

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

    Всего записей: 3217 | Зарегистр. 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 он ощущался, и ещё как.

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

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

    Всего записей: 3217 | Зарегистр. 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 мало общего с типичными скриптами (не только командной строки).

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

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