Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.216.124.8] |
|
Сообщ.
#1
,
|
|
|
Доброго времени суток, камарады!
Раздел, а если быть точнее, тематика - нужна и важна. Но ... имхо, как раздел, она слишком "завышена по ценности/общности". Есть предложения по некоторой модификации рубрик в сторону компактности, я озвучил это в этом сообщении. Антиоффтопик: вывод результатов в консоль и лог-файл одновременно Для *nix систем: $ ./blablabla-script.sh 2>&1 | tee logfile.log Для Виндовс: Сперва создаем скрипт, например, C:\Windows\system32\pipe.js while (!WScript.StdIn.AtEndOfStream) { var str = WScript.StdIn.ReadLine(); WScript.StdOut.WriteLine(str); WScript.StdErr.WriteLine(str); } Потом запускаем нужное: cmd.exe /c blablabla-cmd.cmd | cscript //B C:\Windows\system32\pipe.js 2 >> logfile.log |
Сообщ.
#2
,
|
|
|
Цитата JoeUser @ Для Виндовс: Get-FooBar | Tee-Object logfile.log |
Сообщ.
#3
,
|
|
|
Цитата Dark Side @ Цитата JoeUser @ Для Виндовс: Get-FooBar | Tee-Object logfile.log Чет не понял, чё за Tee-Object? |
Сообщ.
#5
,
|
|
|
аааа, это с повер-шела
|
Сообщ.
#6
,
|
|
|
Да, это идея ещё с юниксовой консоли (tee), которая работала на манер тройника для клонирования стрима. T - слева приходит, справа уходит, и "вниз" перехватывается копия для локальной обработки (тупой лог, интеллектуальный мониторинг по рулам/регекспам и т.п.).
|
Сообщ.
#7
,
|
|
|
3 прогрессбара одновременно на PS:
for($i = 0; $i -lt 5; $i++) { Write-Progress -Id 1 -Activity "Цикл по `$i" -Status "`$i=$i" -PercentComplete ($i / 5 * 100) for($j = 0; $j -lt 5; $j++) { Write-Progress -Id 2 -Activity "Цикл по `$j" -Status "`$j=$j" -PercentComplete ($j / 5 * 100) for($k = 0; $k -lt 5; $k++) { Write-Progress -Id 3 -Activity "Цикл по `$k" -Status "`$k=$k" -PercentComplete ($k / 5 * 100) -SecondsRemaining (5 - $k) Start-Sleep 1 } } } Прикреплённый файлps.PNG (11,89 Кбайт, скачиваний: 1747) Как вы говорите это на CMD реализуется? |
Сообщ.
#8
,
|
|
|
Цитата Dark Side @ 3 прогрессбара одновременно на PS: А можно тоже самое на каком-нибудь STM32 для дисплея LCD 1602? |
Сообщ.
#9
,
|
|
|
ниипу. Да и тут Виндовые языки как-бы.
Добавлено Хотя называть такой набор костылей как CMD языком, язык не поворачивается. |
Сообщ.
#10
,
|
|
|
Цитата Dark Side @ ниипу. Да и тут Виндовые языки как-бы. Почему только виндовые, для юниксов-линуксов тоже. Цитата Dark Side @ Хотя называть такой набор костылей как CMD языком, язык не поворачивается. Ну почему, кстати под этот дисплей вывод shell-ом сделать можно в линуксе. Там вроде просто управляешь пинами с какой-нибудь raspberry. Но вот для той же raspberry была 10-ка выложена. У меня она не пошла, ну и хрен с ней, мне винда была и не нужна. Но вывести на дисплей с помощью скрипта в винде может и можно. А с STM32 это уже сложнее, это уже надо методичку курить |
Сообщ.
#11
,
|
|
|
Ну потому что это тупо надстройка над командной оболочкой мсдоса в винде для нежелавших трахаться с WSH. Доработок там за всё время - по пальцам пересчитать, и, вроде как, вообще больше не будет - тупо потому что есть Power Shell, который гораздо более продвинут во все стороны. CMD в винде осталась как атавизм специально для тех, кто не хочет/не может переписать свои уже давно работающие скрипты.
Глядя на эту тему хочется рыдать - люди придумывают решения проблем, которых уже много лет как не существует. |
Сообщ.
#12
,
|
|
|
cmd по сравнению иксовым шелл ни о чем. Надо посмотреть чего там в PowerShell.
|
Сообщ.
#13
,
|
|
|
На вскидку:
ООП - например, читая директорию, ты получаешь не текст, а массив объектов FileInfo. Преобразование объектов в читабельный текст выделено в отдельный набор функций, которые в свою очередь отделены от функций самого вывода куда-либо (на консоль, в сеть и т.п.) Возможность описывать функции как в нормальных языках Возможность полноценно использовать пайпы с функциями. Куча синтаксического сахара Полноценный базовый набор функций (for, switch и т.д.) Куча самых разнообразных доп. функций, в том числе для работы с сетью, WMI, виндовым планировщиком, да и всем остальным. Низкоуровневые вещи вроде fopen, seek и т.п. если сильно хочется. Выдрал из своих наработок пару примеров: Чтение xml файла внутри zip архива без стороннего софта и создания лишних файлов - всё на потоках. На выходе - распарсенный(!) XML. try { Add-Type -assembly "system.io.compression.filesystem" $zip = [io.compression.zipfile]::OpenRead($filename) $xml= New-Object xml $stream = $zip.GetEntry($xmlfilename).Open() $xml.Load($stream); Write-Output $xml.Data #result is here }catch [Exception] { Write-Error $_.Exception.Message }finally{ $stream.Close() $zip.Dispose() } Функция, которая принимает magnet-ссылку и добавляет её в uTorrent через его веб-интерфейс (запароленный), может принимать данные через пайп (т.е. magnets | Out-uTorrent() ). Тоже никаких вызовов сторонних программ. #.Synopsis #Sent magnet urls to uTorrent via it's admin web-interface function Out-uTorrent() { param( [parameter(Mandatory=$true, ValueFromPipeline=$true)] [String]$Magnet ) Begin { #Gather uTorrent Web-Interface token $webHost = Get-Settings "uTorrentHost" $webUser = Get-Settings "uTorrentUser" $webPass = Get-Settings "uTorrentPass" $response = Invoke-WebRequest ` -Uri "http://$webHost/gui/token.html" ` -Headers @{ "Authorization" = "Basic "+[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($webUser+":"+$webPass )) } ` -SessionVariable "session" Remove-Variable 'webUser', 'webPass' #not needed in the process block if ($response.statusCode -eq 200) { $token = $response.ParsedHtml.getElementById("token").innerHtml Remove-Variable 'response' }else { Write-Error "Gathering uTorrent token failed" $false #return false before break break } } Process { #catch errors and return true/false try { (Invoke-WebRequest "http://$webHost/gui/?token=$token&action=add-url&s=$Magnet&download_dir=1&path=" -WebSession $session).StatusCode -eq 200 }catch { $false } } } Кто мне скажет как это сделать в CMD? |
Сообщ.
#14
,
|
|
|
Цитата Dark Side @ Можно поспорить, что в данном случае это достаточно часто скорее недостаток, чем преимущество.ООП - например, читая директорию, ты получаешь не текст, а массив объектов FileInfo. Преобразование объектов в читабельный текст выделено в отдельный набор функций, которые в свою очередь отделены от функций самого вывода куда-либо (на консоль, в сеть и т.п.) Цитата Dark Side @ Ну большую часть этого ещё sh из первых UNIX'ов умел.Возможность описывать функции как в нормальных языках Возможность полноценно использовать пайпы с функциями. Куча синтаксического сахара Полноценный базовый набор функций (for, switch и т.д.) Куча самых разнообразных доп. функций, в том числе для работы с сетью, WMI, виндовым планировщиком, да и всем остальным. Низкоуровневые вещи вроде fopen, seek и т.п. если сильно хочется. Цитата Dark Side @ Ты ещё попроси это в SUB'е CP/M-ском сделать. Кто мне скажет как это сделать в CMD? |
Сообщ.
#15
,
|
|
|
Цитата amk @ В каком месте возможность получить какие-то данные путём просто обращения к полям объекта вместо полового акта с grep, awk и регулярками является недостатком?Можно поспорить, что в данном случае это достаточно часто скорее недостаток, чем преимущество. Цитата amk @ Что умел? Описания функций там на зачаточном уровне; пайпы с ними вообще никак; for/if/etc там есть, но пользоваться им без ежеминутного залезания в маны нереально, а в PS ты за одни секции begin/process/end в foreach запросто душу продашь; доп. функционал может быть, а может и не быть - сейчас там даже posix не всегда соблюдается, а про то, что ты без установки/написания чего-то тяжелого банально не сможешь свободно лазить внутри xml или html (как в 23-й строке второго примера выше); низкоуровневых вещей и в помине нет.Ну большую часть этого ещё sh из первых UNIX'ов умел. Цитата amk @ Опять-же мы тут за стандартные возможности винды и данный раздел говорим. Извини, но CP/M никак не относится ни к тому ни к другому. Ты ещё попроси это в SUB'е CP/M-ском сделать. |
Сообщ.
#16
,
|
|
|
Цитата Dark Side @ Уже обсуждалось. И убедить кого-либо в полезности этой возможности сторонникам PS не удалось. Хочешь сделать ещё одну попытку? Возможно в случае с чтением папки это даёт преимущество, но в других-то случаях этого нет. В awk это спокойно делается без использования регулярок. И без половых извращений. В каком месте возможность получить какие-то данные путём просто обращения к полям объекта вместо полового акта с grep, awk и регулярками является недостатком? |
Сообщ.
#17
,
|
|
|
Цитата amk @ не смеши, а. Если хотя-бы тот же ls чего-то просто не выводит или выводит не так, никакой awk тебе не поможет. И не важно - ls это, или списки процессов, или ответ от удалённого сервера. Да и само использование awk и прочих уже можно считать ущербностью - ты получил данные, но тебе нужно ещё и разобраться в том, что ты получил. Я уже напарывался раз на то, что мои скрипты перестали работать из-за ifconfig, который однажды просто взял и поменял формат своего вывода. В awk это спокойно делается без использования регулярок Цитата amk @ Вот уж чего не надо. Я прекрасно знаю аргументацию линуксоидов: если ты хочешь что-то что в линуксе сделать сложно, значит это ты дебил и хочешь что-то не то. Проходили, спасибо. Хочешь сделать ещё одну попытку? |
Сообщ.
#18
,
|
|
|
Цитата Dark Side @ Да и само использование awk и прочих уже можно считать ущербностью Простите, но это уже "ступид уйндофс стайл" В "девственно-чистом" униксе полно (over 9000+) полезных утилит. Но, боюсь огорчить, практически во всех современных дистрибутах *nix'ов на 99.9% априори ставится Perl. Это не влажные фантазии - это ... случай таки де факто!!! А на Перле я смогу тебе дважды моск отформатировать, пока ты осознаешь факт начала моей попытки ЗЫ: Если слышал за *nix пару нотЪ - нефик тут симфонию пробовать начинать, ноты выучи сперва!!! Добавлено Цитата Dark Side @ если ты хочешь что-то что в линуксе сделать сложно, значит это ты дебил и хочешь что-то не то. Проходили, спасибо. И это правильно! (Линупс - не единственный уникс! кстати) Все что можно сделать просто, нужно делать просто. |
Сообщ.
#19
,
|
|
|
Цитата JoeUser @ Но, боюсь огорчить, практически во всех современных дистрибутах *nix'ов на 99.9% априори ставится Perl Ну, у многих есть и TCL "из коробки" - тоже своеобразный язычок, и люблю я его тоже своеобразно Хотя сейчас на это место упорно проталкивают Питон. Хотя из-за разрывания его в разные стороны он имеет все шансы стать "JavaScript командной строки": где-то код вообще не запустится, где-то - запустится, но отработает не так как ожидалось и т.п. |
Сообщ.
#20
,
|
|
|
В пень Питон и TCL - на парят они девелперов не разу! Кстати, Ruby на подходе... начинаю знакомиться, адово упоротый ООП.
Ах да ... ваши tcl/tk ... найдите 100 актуальных пакетов на нем, из over 9000+ существующих, поговорим ... Питон-узеры в гневе? Бывает. Вы главное отступы соблюдайте! Остальное - херня. |
Сообщ.
#21
,
|
|
|
Цитата JoeUser @ Ага, давайте расскажите гентущнику и маководу со стажем что там ставится, а что нет и сколько. Тут уже натыкался натыкался на debian-based дистрибутивы без vi в комплекте, про менее популярные вещи даже думать не хочу.Но, боюсь огорчить, практически во всех современных дистрибутах *nix'ов на 99.9% априори ставится Perl. Это не влажные фантазии - это ... случай таки де факто!!! Цитата JoeUser @ Вот только сфигали лишний парсинг текста вы называете "просто"? Получается, зачем нам сразу брать данные нужного поля у объекта, когда можно просто добавить ещё 3 команды с невнятными аббревиатурами и 2 регулярки сверху! Ну и да, регулярку в каждом дистрибутиве надо перепроверять - нельзя ж заранее угадать что нам простые команды напишут. Вдруг они по-русски, например, кумекают, а мы тут... ну в общем простота у вас тут зашкаливает, я смотрю.И это правильно! (Линупс - не единственный уникс! кстати) Все что можно сделать просто, нужно делать просто. ЗЫ: Цитата JoeUser @ В "девственно-чистом" униксе полно (over 9000+) полезных утилит Цитата Бритва Оккама, на которую сослались там же Тут уже просто нечего добавлять. Не следует множить сущее без необходимости |
Сообщ.
#22
,
|
|
|
Цитата Dark Side @ Ага, давайте расскажите гентущнику и маководу Звучит не менее угрожающе, нежели: еврей-сталевар! |
Сообщ.
#23
,
|
|
|
Цитата JoeUser @ Цитата Бритва Оккама, на которую сослались там же Не следует множить сущее без необходимости Бритва ДжоЮзера: Не следует строить из себе Рахметова без необходимости! Добавлено Цитата Mr.Delphist @ Хотя сейчас на это место упорно проталкивают Питон. Есть такое дело. Тем не менее, наличие в системе Перла, Руби, Питона, практически с момента старта *nix системы, подчеркиваю, априори - дает не просто бонус, а просто загоняет обратно в детский сад "все ваши виндовсы". Это я вам, как сталевар-юниксовод гарантирую |
Сообщ.
#24
,
|
|
|
Цитата JoeUser @ Да, да. Просто надо поставить весь софт из интернета сразу вместе с системой - и всё будет работать. Наверное. Если не забывать где там питон, где руби, а где Си с препроцессами на PHP. Юникс-вэй, согласен. Но спасибо - уж лучше детский сад. Тем не менее, наличие в системе Перла, Руби, Питона, практически с момента старта *nix системы Добавлено Жаль только что если вам уж так приспичил руби, то под виндами внезапно он тоже есть. Только вот винда вполне нормально и без него может работать. |
Сообщ.
#25
,
|
|
|
Цитата JoeUser @ Ах да ... ваши tcl/tk ... найдите 100 актуальных пакетов на нем, из over 9000+ существующих, поговорим ... Дык я ж почему и говорю: Цитата Mr.Delphist @ своеобразный язычок, и люблю я его тоже своеобразно А так - да, и ООП в нём есть (два разных несовместимых пакета), и поддержка COM, и сокеты - целый автоматизатор большой legacy-софтины мы на нём запилили... Правда, tk-часть я кроме хелло-ворлдов не щупал и сказать про это что-либо не могу (кроме того что выглядит оно как героиновая манекенщица без макияжа). |