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

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



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

Цитата:
Вопрос - в принципиальной возможности реализации.

Ну, если только в этом дело...
Для сравнения:
powershell
код
Пример:

Код:
.\script.ps1 -sour 'test.txt','.\1' -filt '*.txt' -num 'last' -flag 'Таня' -pat 'Коля' -sub 'Вася' -full -whatif

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 18:30 22-04-2019 | Исправлено: YuS_2, 00:44 24-04-2019
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Flag - обязательный, а Pattern и Substitute - нет? Может, наоборот?
Вы говорили, что ограничений на длину строк нет, - а если все передается через аргументы, то ограничения накладываются максимально допустимой длиной комстроки. Не говоря уже о том, что
zareg

Цитата:
Символы могут быть любые

- и в имени файла, и в строках.

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

Всего записей: 4000 | Зарегистр. 18-04-2005 | Отправлено: 19:05 22-04-2019 | Исправлено: GCRaistlin, 19:06 22-04-2019
YuS_2



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

Цитата:
Может, наоборот?

Может и наоборот... но если, например, потребуется просто вывести строки с определенными номерами, то параметры и не потребуются...
А -Flag, это просто разрешение на изменение файла (собственно, это было в усовиях)... но там может быть любой символ просто -flag '.'
 

Цитата:
Вы говорили, что ограничений на длину строк нет

Строго говоря, ограничение есть, но чтобы его выбрать - надо много, очень много текста
 

Цитата:
а если все передается через аргументы

Что всё?
И главное: зачем?
 

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

А какие есть ограничения у powershell?
 

Цитата:
и в имени файла, и в строках.

И в чем проблема? Какие символы не читаются?

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 19:18 22-04-2019 | Исправлено: YuS_2, 19:19 22-04-2019
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Замените вашим скриптом слово, начинающееся с

Цитата:
<

за которым следует 5001 символ

Цитата:
a

на
слово, начинающееся с

Цитата:
>

за которым следует 4002 символа

Цитата:
b

в файле

Код:
 
Рога&копыта.txt
 


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

Всего записей: 4000 | Зарегистр. 18-04-2005 | Отправлено: 19:33 22-04-2019
YuS_2



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

Цитата:
за которым следует 5001 символ

Ну, во-первых, шаблоны должны быть вменяемыми... нет?
Во-вторых: не понял, в чем проблема-то?
Исходный файл:

 
Шаблон:

 
Результат:

 
У Вас не так?

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



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

Цитата:
Ну, во-первых, шаблоны должны быть вменяемыми... нет?

Это прямо противоречит условию задачи.

Цитата:
Во-вторых: не понял, в чем проблема-то?

А, ну, если запускать из PS (т. е. интерактивно), тогда, наверное, проблем нет. Я просто не понял, что ваша комстрока предназначалась не для запуска из ОС напрямую.

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

Всего записей: 4000 | Зарегистр. 18-04-2005 | Отправлено: 20:32 22-04-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А если смущает шаблон поиска в виде регэкспа, то можно и так:
 
Шаблон:

 
Результат:

 
PS
В общем, непонятно, что этот эксперимент должен был продемонстрировать... ну, кроме потраченного времени
 
Добавлено:
GCRaistlin

Цитата:
ну, если запускать из PS (т. е. интерактивно), тогда, наверное, проблем нет.

Можно и скриптом, т.е. строку запуска сохранить в файл и этот файл использовать как скрипт.
 

Цитата:
комстрока предназначалась не для запуска из ОС напрямую.

Хмм, что значит из "ОС напрямую"? Консоль powershell - часть ОС и работает она напрямую из неё.

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



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

Цитата:
что значит из "ОС напрямую"?

Это значит - то, что можно запустить из диалога Win+R.

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

Всего записей: 4000 | Зарегистр. 18-04-2005 | Отправлено: 21:16 22-04-2019
YuS_2



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

Цитата:
можно запустить из диалога Win+R.

Так это ограничение не powershell, а диалога, наверное?
К тому же, можете батник создать и запускать его, или даже сделать скрипты powershell исполняемыми... так что, это не те проблемы о которых следует говорить.

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Это ограничение парсера командной строки. Действительное и для батника, и для PS, и вообще для чего угодно.
 

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

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

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

Всего записей: 4000 | Зарегистр. 18-04-2005 | Отправлено: 21:43 22-04-2019
YuS_2



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

Цитата:
Это ограничение парсера командной строки. Действительное и для батника, и для PS, и вообще для чего угодно.

Отрицание очевидного - не аргумент, ни разу.  
Я ведь показал, что в powershell нет такого ограничения. Или консоль powershell не является командной строкой по-вашему?
К тому же:
Для создания лучшей командной строки PowerShell теперь является стандартной командной оболочкой, которая запускается в проводнике.
 
Тем не менее, прежде чем что-то утверждать, всё же, лучше проверить сначала, а так ли это на самом деле...
Вот вам батник:
run.bat
 
А вот результат его работы:

- не наблюдаю того самого, пресловутого ограничения.
Ограничение присутствует, но только, именно в парсере CMD, а не в парсере "командной строки"...
 

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

И в чем именно усложнение?
Ввести сверхдлинную строку для запуска в диалог Win+R, по-вашему, это просто, а создать пакетный сценарий и уже его запускать - это сложно?
Надуманные "сложности" никак не отменят естественных ограничений CMD - вот это объективно. А дополнительные скрипты, в том числе и powershell, это упрощение запуска, а не его усложнение... хоть это и субъективно, но достаточно очевидно.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 08:04 23-04-2019 | Исправлено: YuS_2, 08:16 23-04-2019
GCRaistlin



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

Цитата:
Я ведь показал, что в powershell нет такого ограничения. Или консоль powershell не является командной строкой по-вашему?

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

Цитата:
Ограничение присутствует, но только, именно в парсере CMD, а не в парсере "командной строки"...

Судя по тому кошмару, который получается при вызове PS в окне Far, для обхода ограничений парсера командной строки PS запускает собственный парсер.
 
Добавлено:
YuS_2

Цитата:
Ввести сверхдлинную строку для запуска в диалог Win+R, по-вашему, это просто

Нет. Нормальный способ передачи подобных параметров - через ini-файл.
 

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

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

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

Всего записей: 4000 | Зарегистр. 18-04-2005 | Отправлено: 10:10 23-04-2019 | Исправлено: GCRaistlin, 10:13 23-04-2019
YuS_2



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

Цитата:
В том смысле, который имелся в виду

телепатические способности временно атрофированы. О каком смысле речь?
 

Цитата:
Попробуйте запустить, например, что-нибудь через ассоциацию файла (в реестре), не учитывая этого ограничения.

Пример приведите. Общие слова ни о чем не говорят.
 

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

И при чем тут Far? У него вообще собственная консоль... перестаньте приводить какие-то детские страшилки. Если есть что конкретное, то выкладывайте в виде примера.
И да, powershell имеет свой собственный обработчик команд. По-моему это очевидно, иначе это был бы просто CMD с расширенным набором... но это, конечно, не так.
 

Цитата:
Нормальный способ передачи подобных параметров - через ini-файл.

А нормирующая организация - это GCRaistlin?
Чушь. Чем так замечателен ваш .ini?  
Параметры можете брать и из .xml, и из .json, и из .csv ... да откуда угодно, лишь бы это было удобно.  
И да, не я ведь привел пример ввода строки запуска в диалог Win+R, в качестве аргумента. Почему разговор свалился на .ini?
 

Цитата:
Скрипт на скрипте - это костыль, а не упрощение.

А Вы что предлагаете? ini? Это даже не костыль, это прогнившая палка... в таком случае.
 

Цитата:
но эстетически окно PS все равно выглядит ужасно

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

Цитата:
тормозит при запуске не по-детски

Тормоза при запуске 3-5 сек., это "не по-детски", в вашем понимании? В таком случае cmd, вообще с места не двигается, ни разу, во время работы...
Уж лучше при запуске такие "тормоза", чем дикие тормоза во время исполнения скриптов, особенно на объемных текстах. Да и сам код в cmd - страшный сон для любого пользователя, учитывая огромные ограничения и бедность инструментальных средств.
 

Цитата:
сообщения об ошибках совершенно неинтуитивны.

Чего-чего? Там сообщения об ошибках настолько информативны и подробны, насколько это вообще возможно. Просто научитесь их читать.
И с чем вы вообще их сравниваете? С сообщениями об ошибках CMD?! Не смешите мои тапки... там их просто вообще нет, по сравнению с powershell.
 

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

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

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 10:55 23-04-2019
GCRaistlin



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

Цитата:
Пример приведите.

Кладем в C:\Programs SetClip.exe. Добавляем в реестр:

Код:
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\txtfile\shell\test1]
@="test1"
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\txtfile\shell\test1\command]
@="C:\\Programs\\SetClip.exe \"&\"&\""
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\txtfile\shell\test2]
@="test2"
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\txtfile\shell\test2\command]
@="C:\\Programs\\SetClip.exe \"& &\""
 

Щелкаем ПКМ на любом txt-файле, выбираем test1, проверяем содержимое буфера обмена. Затем делаем то же с test2. В первом случае кавычка между амперсандами в буфер не попадает, во втором - пробел попадает. Ограничение парсера командной строки.
 

Цитата:
И при чем тут Far?

Так выглядит окно Far до запуска PS, так - после. А в первый раз PS мне вообще всю псевдографику в окне Far поломал.
 

Цитата:
powershell имеет свой собственный обработчик команд.

Кстати. А если заменяемая строка начинается с кавычки, тоже нет проблем? Или если в имени файла апостроф присутствует? Я вот в лоб проверил - и ожидаемо обломался в обоих случаях.
 

Цитата:
Чем так замечателен ваш .ini?  
Параметры можете брать и из .xml, и из .json, и из .csv ... да откуда угодно, лишь бы это было удобно.

Под "ini" имелся в виду текстовый файл. Его конкретный формат особого значения не имеет (хотя ini гораздо понятнее в плане правки, чем xml или json). Но вы-то предложили лепить все параметры прямо в комстроку.
 

Цитата:
Тормоза при запуске 3-5 сек., это "не по-детски", в вашем понимании? В таком случае cmd, вообще с места не двигается, ни разу, во время работы...

Тормоза при работе - это, на мой субъективный взгляд, одно, а когда PS 5 секунд требуется, чтобы обнаружить неверный синтаксис, это несколько другое. При этом PS тормозит при запуске всегда, а cmd при работе - нет.
 

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

"Информативны и подробны" и "интуитивны" (вернее, "интуитивно понятны") - это не одно и то же.

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

Всего записей: 4000 | Зарегистр. 18-04-2005 | Отправлено: 13:47 23-04-2019 | Исправлено: GCRaistlin, 13:48 23-04-2019
Smitis



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

Цитата:
Так выглядит окно Far до запуска PS, так - после. А в первый раз PS мне вообще всю псевдографику в окне Far поломал

Цитата:
Far 2.1.1807

Как бы, ничего удивительного
Рекомендую попробовать версию посвежее.
 
YuS_2

Цитата:
Или консоль powershell не является командной строкой по-вашему?

По большому счёту, командная строка в Windows, это то, что передаётся в CreateProcess. Всё остальное отсебятина каждого отдельного приложения со своими собственными фичами и ограничениями.
 
Добавлено:

Цитата:
Щелкаем ПКМ на любом txt-файле, выбираем test1, проверяем содержимое буфера обмена. Затем делаем то же с test2. В первом случае кавычка между амперсандами в буфер не попадает, во втором - пробел попадает. Ограничение парсера командной строки.

В первом случае выполняется SetClip.exe "&"&"
Во втором случае выполняется SetClip.exe "& &"
В принципе, нормальная работа стандартного парсера для VS и Винды - того, который разбивает строку на параметры - в первом случае ДВЕ пары кавычек (вторая пара не закрыта и считается закрытой автоматически при завершении строки), т.е., эквивалентна SetClip.exe "&"&""

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

Всего записей: 3219 | Зарегистр. 09-02-2003 | Отправлено: 16:03 23-04-2019 | Исправлено: Smitis, 16:04 23-04-2019
GCRaistlin



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

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

Нужно изучать Lua, разбираться с SQL... Никак себя не заставить вот уже много лет.
Да и проверил только что - PS портит шрифт в Тройке не менее успешно.
 

Цитата:
В принципе, нормальная работа стандартного парсера для VS и Винды - того, который разбивает строку на параметры - в первом случае ДВЕ пары кавычек (вторая пара не закрыта и считается закрытой автоматически при завершении строки), т.е., эквивалентна SetClip.exe "&"&""

Ну как-то странно все равно: в первом случае он ведь вовсе кавычки выкидывает. А может, и не он, а сам SetClip.
UPD: а, и во втором ведь тоже выкидывает. Ну да, это, наверное, SetClip'а уже проделки.

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

Всего записей: 4000 | Зарегистр. 18-04-2005 | Отправлено: 16:34 23-04-2019 | Исправлено: GCRaistlin, 16:38 23-04-2019
YuS_2



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

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

А, вот про что речь... ну, хоть в этом powershell не виноват, а то я уж думал, что про него речь.
 

Цитата:
Так выглядит окно Far до запуска PS, так - после. А в первый раз PS мне вообще всю псевдографику в окне Far поломал.

Хмм, так powershell-то здесь при чем? Обратитесь к разработчикам Far-а.
А в cmd-консоли что-нибудь ломается?
 

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

Проверьте... или попозже сам проверю...
 

Цитата:
Или если в имени файла апостроф присутствует?

С апострофами и квадратными кавычками, возможны проблемы, но варианты обхода существуют. Просто я не учитывал это в коде. В следующей версии попытаюсь добавить. Кстати, версия скрипта уже обновилась.
 

Цитата:
Но вы-то предложили лепить все параметры прямо в комстроку.

Предложил так, как было проще. Если возникнет необходимость, это легко выносится в файл. Но это-то, как раз, не упрощение, а совсем наоборот.
 

Цитата:
когда PS 5 секунд требуется, чтобы обнаружить неверный синтаксис, это несколько другое.

У Вас, возможно, какие-то проблемы с конфигурацией железа и софта.
 

Цитата:
При этом PS тормозит при запуске всегда, а cmd при работе - нет.

Вы говорите о субъективных вещах, причем без каких-либо конкретных данных. Ну, да ладно... считайте это тормозами, если так хочется.
 

Цитата:
"Информативны и подробны" и "интуитивны" (вернее, "интуитивно понятны") - это не одно и то же

Хмм, интуиция - это понятие не из точных наук, так что о ней можете поговорить конечно, но не в контексте сравнения вывода ошибок cmd и powershell, ибо сравнивать там нечего, в cmd зачастую просто нет никакого вывода.
 
Добавлено:
Smitis

Цитата:
По большому счёту, командная строка в Windows, это то, что передаётся в CreateProcess.

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

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

Согласен.

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



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

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

Как перешедший много лет назад - с SQL заморочиваться смысла нет, это уже такие дебри... А скрипты - макросы для 2 обычно очень примитивны, по сравнению с 3 и в большинстве случаев сводятся к вызову одной функции Keys.

Цитата:
Да и проверил только что - PS портит шрифт в Тройке не менее успешно.

Не разу не замечал.

Цитата:
Ну как-то странно все равно: в первом случае он ведь вовсе кавычки выкидывает. А может, и не он, а сам SetClip.
UPD: а, и во втором ведь тоже выкидывает. Ну да, это, наверное, SetClip'а уже проделки.

Упрощенно - всё что находится между кавычками, считаются частью одного параметра, сами кавычки выкидываются, разделителями параметров считаются пробельные символы не в кавычках. Т.о., "qwerty tyuiop"asdfg"1234 567 890 "jkl будет считаться одним параметром. Получить строку as is (то, как она передаётся в CreateProcess) можно WinApi функцией GetCommandLine, а вот то, как она будет разбираться на параметры зависит от компилятора и/или фантазии программиста. Хотя обычно велосипед не изобретают и пользуются тем, что предоставляет компилятор через args.
 
YuS_2

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

Вообще, командная строка понятие довольно расплывчатое. Обычно под этим подразумевают
1) То, что передается программе системой всё через тот же CreateProcess и потом попадает в args
2) Интерактивный режим работы программы в виде цикла ожидания ввода строки пользователем и дальнейшей её интерпретацией (cmd, powershell, netsh, telnet и прочие, в том числе могут быть гуевые). Тут каждая программа извращается как может.
3) Чёрное консольное окошко "ДОС" (хотя это вариант 2)

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

Всего записей: 3219 | Зарегистр. 09-02-2003 | Отправлено: 17:45 23-04-2019 | Исправлено: Smitis, 17:50 23-04-2019
YuS_2



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

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

Об этом самом и говорю, как раз.  
Если уж упоминать "командную строку", то было бы неплохо, уточнять, что в конкретном случае подразумевается под этим термином... иначе возникают разночтения.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 18:07 23-04-2019
GCRaistlin



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

Цитата:
ну, хоть в этом powershell не виноват, а то я уж думал, что про него речь.

Речь не про то, кто виноват. Просто у парсера есть ограничения - в силу того, что он делит на части по определенным правилам. А в данном случае мы передаем ему нечто, составленное без соблюдения каких-либо правил.
Впрочем, я действительно перепутал ограничения cmd.exe с ограничениями парсера в части длины комстроки: оно есть и парсера, но не 8192 (или 8191), а 32767.
 

Цитата:
А в cmd-консоли что-нибудь ломается?

Да, то же самое.
 

Цитата:
Предложил так, как было проще. Если возникнет необходимость, это легко выносится в файл. Но это-то, как раз, не упрощение, а совсем наоборот.

Упрощение реализации или упрощение пользования?
 

Цитата:
У Вас, возможно, какие-то проблемы с конфигурацией железа и софта.

Наверняка.
 

Цитата:
Вы говорите о субъективных вещах, причем без каких-либо конкретных данных.

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

Цитата:
не в контексте сравнения вывода ошибок cmd и powershell, ибо сравнивать там нечего

Когда я в cmd.exe указываю неверное название скрипта, мне система об этом лаконично сообщает. А в PS выдается маловразумительная портянка красного цвета (который сам по себе дает определенное представление об уровне мышления создателей PS), из которой с ходу ни фига не понятно. Чувствуется индусская рука.
 
Добавлено:
Smitis

Цитата:
А скрипты - макросы для 2 обычно очень примитивны

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

Цитата:
Не разу не замечал.

Выставьте шрифт Lucida Console.

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

Всего записей: 4000 | Зарегистр. 18-04-2005 | Отправлено: 18:15 23-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