Няшный Cmd.com, Или разбор полетов братана alvd |
|
Здравствуйте, гость ( Вход | Регистрация )
Данный раздел форума предназначен для оставления своих комментариев и мнений по поводу размещенных на сайте soft.cnews.ru программ.
1. Обращаем ваше внимание, что односложные комментарии из не несущих смысловой нагрузки выражений, например: «хорошо», «круто», «отстой» и т.д. не несут практической пользы для посетителей сайта и форума, и будут удалены модератором. Для этого существует система оценки программ на сайте. При оставлении комментариев старайтесь более полно выражать свое положительное/отрицательное мнение по поводу программы, указывать ее положительные и отрицательные качества, а при возникновении проблем или вопросов – максимально четко формулируйте запрос.
2. Удалению подлежат следующие комментарии:
- запросы кейгенов, кряков, серийных номеров и ключей для выложенных на сайте программ;
- спам и флуд: сообщения, содержащие рекламу чего-либо, мусор (одни лишь смайлы или наборы символов) и сообщения, не несущие смысловой нагрузки.
3.Помните: комментируя программу первым, вы тем самым создаете новую тему на форуме.
Няшный Cmd.com, Или разбор полетов братана alvd |
19.6.2011, 9:44
Сообщение
#1
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Предыстория.
Братюня alvd в ответ на высмеивание его знаний выпендрился, и опубликовал два скрипта - http://xn----8sbbemc3a7aecex.xn--p1ai/foru...p;#entry1458918 Один скрипт типа под виндуз (очень длинный), а другой типа под люник (очень короткий). Сим братюня alvd знаменовал скорый вендекопец и вообще. На что братюне alvd дали вполне обоснованный отлуп: http://xn----8sbbemc3a7aecex.xn--p1ai/foru...p;#entry1458970 Где нормальный (написанный специалистом) скрипт занимает в два раза меньше места, чем люниксовый. И это чистый cmd.com! История. Братюня alvd не успокоился и излив ушаты праведного линуксгнева на Майкрософт, MSDN и лично на Балмера, он придумал новый пример. Якобы приближающий вендекопец и вообще. Давайте рассмотрим этот образчик люниксмысли: Цитата REM Firefox set mozDir=%APPDATA%\Mozilla set ffDir=%mozDir%\Firefox set ffProf=%ffDir%\profiles.ini xcopy /E /S "%APPDATA%\Mozilla\Firefox\Profiles\firefox.default\*.*" "%UserSettingsRoot%\Firefox\" echo [General]|sort > "%ffProf%" echo StartWithLastProfile=1|sort >> "%ffProf%" echo. >> "%ffProf%" echo [Profile0]|sort >> "%ffProf%" echo Name=default|sort >> "%ffProf%" echo IsRelative=0|sort >> "%ffProf%" echo Path=%UserSettingsRoot%\Firefox|sort >> "%ffProf%" Сей чюдестный кусок Что по этому поводу пишет коллега? Он думает, что все просто: Код Перенос профиля Firefox (генерация файла profiles.ini в %APPDATA%). Без sort перевод строки будет неправильным. Что, решим через FOR, да? smile.gif Т.е. наш Но что на самом деле? А я вам отвечу! Давайте посмотрим код, который сгенерировал вариант без команды сорт (просто уберем ее): Цитата echo [General] > "%ffProf%" echo StartWithLastProfile=1 >> "%ffProf%" echo. >> "%ffProf%" echo [Profile0] >> "%ffProf%" echo Name=default >> "%ffProf%" echo IsRelative=0 >> "%ffProf%" echo Path=%UserSettingsRoot%\Firefox >> "%ffProf%" Мы увидим следующее: Прошу отметить наличие лишних ПРОБЕЛОВ в конце каждой строки. Теперь давайте посмотрим на код, который генерируется с помощью команды "sort" (как в оригинале): Как мы видим, ЕДИНСТВЕННОЕ различие между файлами - это пробелы в конце КАЖДОЙ строки. А символы перевода строк в обоих случаях одинаковы - типичный виндовый CRLF. Кагже таг! Спросит внимательный читатель. Ведь Но как же исправить ситуацию, спросите вы? А я вам отвечу! Вот быстрый фикс, который уберет лишние пробелы: Цитата echo [General]> "%ffProf%" echo StartWithLastProfile=1>> "%ffProf%" echo. >> "%ffProf%" echo [Profile0]>> "%ffProf%" echo Name=default>> "%ffProf%" echo IsRelative=0>> "%ffProf%" echo Path=%UserSettingsRoot%\Firefox>> "%ffProf%" А вот совсем красивый и правильный вариант, о котором коллега совсем не в курсе: Цитата echo > %ffProf% [General] echo >> %ffProf% StartWithLastProfile=1 echo >> %ffProf% echo >> %ffProf% [Profile0] echo >> %ffProf% Name=default echo >> %ffProf% IsRelative=0 echo >> %ffProf% Path=%UserSettingsRoot%\Firefox Оба дадут валидный код. |
|
|
19.6.2011, 10:04
Сообщение
#2
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
А вот совсем красивый и правильный вариант, о котором коллега совсем не в курсе: Неправильный оно код даст, если после echo пробел оставить (добавит его в начало вместо конца, как в первом неправильном варианте), что снижает читаемость, но это не суть. Это просто в очередной раз показывает недоделанность виндового шелла. Если он не умеет даже разделители парсить правильно. :lol:
Цитата echo > %ffProf% [General] echo >> %ffProf% StartWithLastProfile=1 echo >> %ffProf% echo >> %ffProf% [Profile0] echo >> %ffProf% Name=default echo >> %ffProf% IsRelative=0 echo >> %ffProf% Path=%UserSettingsRoot%\Firefox Оба дадут валидный код. |
|
|
19.6.2011, 10:06
Сообщение
#3
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Цитата Неправильный оно код даст, если после echo пробел оставить (добавит его в начало вместо конца, как в первом неправильном варианте), что снижает читаемость, но это не суть. Это просто в очередной раз показывает недоделанность виндового шелла. Если он не умеет даже разделители парсить правильно. newlaugh.gif Прости, куда пробел вставить? |
|
|
19.6.2011, 10:08
Сообщение
#4
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Прости, куда пробел вставить? У тебя после echo идет пробел. В этом варианте в начале добавляемой в файл строки, он так же появляется. А вот если его после echo убрать, то - нет. Т.е. должно быть так:Код echo> %ffProf% [General]
echo>> %ffProf% StartWithLastProfile=1 echo>> %ffProf% echo>> %ffProf% [Profile0] echo>> %ffProf% Name=default echo>> %ffProf% IsRelative=0 echo>> %ffProf% Path=%UserSettingsRoot%\Firefox |
|
|
19.6.2011, 10:15
Сообщение
#5
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Прости, куда пробел вставить? Код echo> %ffProf% [General] echo>> %ffProf% StartWithLastProfile=1 echo>> %ffProf% echo>> %ffProf% [Profile0] echo>> %ffProf% Name=default echo>> %ffProf% IsRelative=0 echo>> %ffProf% Path=%UserSettingsRoot%\Firefox Это если принимать в серьез Windows XP, на семерке с вистой он нормально вставляет. |
|
|
19.6.2011, 11:05
Сообщение
#6
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
|
|
|
19.6.2011, 11:10
Сообщение
#7
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Это если принимать в серьез Windows XP, на семерке с вистой он нормально вставляет. В серьёз Windows XP принимаем, поскольку она-таки на большинстве вендомашин, а вот отражено ли данное изменение поведения в MSDN, увидеть было бы интересно.В РФ это 51% у икспи и 40% у Vista/Seven. Ну и раз в семь-десять лет МОЖНО позволить себе подправить скрипты =) Я щитаю. |
|
|
19.6.2011, 11:38
Сообщение
#8
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Это если принимать в серьез Windows XP, на семерке с вистой он нормально вставляет. Веришь нет, но у нас кое где еще и 98 принимают всерьез, хотя я постоянно на это матерюсь. Вот недавно пришлось туда питонДОС запихнуть, потому как command.com не знает for, %DATE% и т.п. Команды же date нет в природе, тоже видимо только с W2К появилась.А вобще твой пример - это втаптывание в грязь cmd. Ибо нет никакой логики в том что передаваемое значение находится справа от оператора перенаправления вывода. echo блаблабла >> file - логичная запись echo>> file блаблабла - ни хрена не логична да еще в обоих случаях с пробелами заморочи, которые "поправили" только в "принимаемой всерьез" версии за отдельные деньги на ее приобретение. Т.е. в очередной раз убеждаемся в идиотизме разработчиков МС. |
|
|
19.6.2011, 12:01
Сообщение
#9
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Цитата Веришь нет, но у нас кое где еще и 98 принимают всерьез, Не верю! Цитата echo блаблабла >> file - логичная запись echo>> file блаблабла - ни хрена не логична Почему? Цитата Т.е. в очередной раз убеждаемся в идиотизме разработчиков МС. Почему? |
|
|
19.6.2011, 12:12
Сообщение
#10
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Не верю! Это все от молодости.Цитата echo блаблабла >> file - логичная запись echo>> file блаблабла - ни хрена не логична Почему? Ты видел чтобы в с++ cout << "sdsdfsdf" не выводил в stdout, а брал(?) с него? Но чтобы тебе было спокойнее - команда echo одинаково работает везде. В линуксе в том числе. За исключением проблем с пробелами. ;) Цитата Т.е. в очередной раз убеждаемся в идиотизме разработчиков МС. Почему? |
|
|
19.6.2011, 12:25
Сообщение
#11
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Цитата По здравову смыслу и общепринятым нормам, согласно которым перенаправляемое значение стоит в начале направления, а не в конце т.е. для пренаправления A в B логично писать A >> B либо B << A. А уж никак не B >> A. Что за нормы то такие? Кто их придумал? С чего ты взял, что это удобно и общепринятно? Цитата echo aaa > file.txt echo bbbbbbbbbbbb > file.txt echo ccccccccccccccccccccccccccccc > file.txt А Цитата echo > file.txt aaa echo > file.txt bbbbbbbbbbbb echo > file.txt ccccccccccccccccccccccccccccc Это неудобно и не общепринято? Цитата см. выше. Потому что не как у людей. У людей все должно быть через жопу, как это происходит в баше? Ню-ню. Братюня, ты просто подумай головой. "Общепринято" в твоем случае - это "первым увидел". Админил бы ты виндуз, было бы у тебя другое "общепринято" и матерился бы ты на нелогичность люникса. |
|
|
19.6.2011, 12:26
Сообщение
#12
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Что за нормы то такие? Кто их придумал? Программисты. Прикинь. Но ты же к ним не принадлежишь.С чего ты взял, что это удобно и общепринятно? Цитата echo aaa > file.txt echo bbbbbbbbbbbb > file.txt echo ccccccccccccccccccccccccccccc > file.txt А Цитата echo > file.txt aaa echo > file.txt bbbbbbbbbbbb echo > file.txt ccccccccccccccccccccccccccccc Это неудобно и не общепринято? У людей все должно быть через жопу, как это происходит в баше? Ню-ню. Вообще есть пошлый анекдот про то как рождаются сисадмины.
|
|
|
19.6.2011, 12:33
Сообщение
#13
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Цитата Программисты. Прикинь. Но ты же к ним не принадлежишь. Братюня, ну ты как ребенок малый, лишь бы п*здануть ченить обидное и самому не зареветь =) Какие программисты? Имена плз. А то можно подумать, что виндуз не программисты писали, а Disaron-ы какиенибудь) Цитата Это может быть читабельнее, но логики лишено. И таки да - не общепринято. Т.е. там где и удобно и читаемо и понятно - линукслогика отсутствует? Вау! Подросло поколение псевдопользователей баша =) |
|
|
19.6.2011, 13:26
Сообщение
#14
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Братюня, ну ты как ребенок малый, лишь бы п*здануть ченить обидное и самому не зареветь =) Какие программисты? Имена плз. А то можно подумать, что виндуз не программисты писали, а Disaron-ы какиенибудь) Тебе обидно что ты не программист? Ну так кто ж виноват? :lol: Т.е. там где и удобно и читаемо и понятно - линукслогика отсутствует? Вау! Подросло поколение псевдопользователей баша =) Не всегда то что проще прочесть - в целом логичнее. В данном случае одна строчка читается легче в общепринятом варианте, несколько - в твоем. Только вот чтобы прочесть твои строчки неподготовленному к такому костылю, который я описал, человеку надо поменять свои представления о логичности.
|
|
|
19.6.2011, 13:39
Сообщение
#15
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Цитата Тебе обидно что ты не программист? Ну так кто ж виноват? newlaugh.gif Мне норм, а ты вот плачешь все время и мамку зовешь =) Цитата Не всегда то что проще прочесть - в целом логичнее. В данном случае одна строчка читается легче в общепринятом варианте, несколько - в твоем. Только вот чтобы прочесть твои строчки неподготовленному к такому костылю, который я описал, человеку надо поменять свои представления о логичности. Ну я и говорю, там где простота и понятность - линукса нет. Почему? Какой-то линуксбожок придумал, что в перволинуксе все будет через жопу, с тех пор и выросло поколение "привычных" люниксоидов. Которые смотрят на нормальную ОС и репу чешут. И начинают несуществующие спецсимволы удалять командой sort. Правда, вас таких альтернативных меньше одного процента. Что и нормально, я щитаю. Братюня, читай лучше http://habrahabr.ru/blogs/nix/122179/ а серьезные темы оставь взрослым дядям =) |
|
|
19.6.2011, 13:59
Сообщение
#16
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Почему? Какой-то линуксбожок придумал, что в перволинуксе все будет через жопу Да нет, у вывернутости башевского синтаксиса есть абсолютно ясная и исторически неизбежная причина: это синтаксис довольно мощного языка, сознательно (и весьма грамотно) спроектированный в конце 70х для телетайпа (в лучшем случае для ВТ100) . Все должно было умещаться в одной строке, потому что только ее и можно (с трудом) редактировать. Предполагаемый пользователь - профессиональный девелопер или сисадмин (со все равно уже вывернутыми мозгами) и если цена опечатки стремится к бесконечности - это его проблемы и его ответственность. У убожества МСовских шеллов другая причина - изначальный комманд.ком должен был работать с дискеты, не занимая ее всю А все последующие должны были быть с ним максимально совместимы. МС слишком поздно решился на редизайн. |
|
|
19.6.2011, 14:05
Сообщение
#17
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Почему? Какой-то линуксбожок придумал, что в перволинуксе все будет через жопу Да нет, у вывернутости башевского синтаксиса есть абсолютно ясная и исторически неизбежная причина: это синтаксис довольно мощного языка, сознательно (и весьма грамотно) спроектированный в конце 70х для телетайпа (в лучшем случае для ВТ100) . Все должно было умещаться в одной строке, потому что только ее и можно (с трудом) редактировать. Предполагаемый пользователь - профессиональный девелопер или сисадмин (со все равно уже вывернутыми мозгами) и если цена опечатки стремится к бесконечности - это его проблемы и его ответственность. У убожества МСовских шеллов другая причина - изначальный комманд.ком должен был работать с дискеты, не занимая ее всю А все последующие должны были быть с ним максимально совместимы. МС слишком поздно решился на редизайн. Так я об этом и говорю. Надо много-много лет бороться с глупостями в виде баша, что бы их полюбить и потом искренне считать лучшим решением. Я уже встречал неадекватов, которые на баше и аналог AD+GPO грозились написать и Exchange тоже реализовывали. Надо ли говорить, что это по большому счету либо линуксп*здеж либо такие костыли.. что cmd.com позавидует. |
|
|
19.6.2011, 14:08
Сообщение
#18
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Мне норм, а ты вот плачешь все время и мамку зовешь =) Как тебя зацепило то. Ты пойми, нет ничего плохого в том что тебе не пришлось заниматься программированием. Наверно ты ничего не потерял, ведь главное чтобы все делали за тебя не? И тф сам синхронизировался с ПК и плеер начинал играть когда наушники в уши запихнешь на нужную глубину. Главное бабло на это иметь. :D Лиши тебя его - что будешь делать? Воровать? Или ручками и головой работать станешь? Ужас - мне с тобой как с малым ребенком несмышленым приходится общаться. :no: Грустно.Ну я и говорю, там где простота и понятность - линукса нет. Почему? Какой-то линуксбожок придумал, что в перволинуксе все будет через жопу, с тех пор и выросло поколение "привычных" люниксоидов. Которые смотрят на нормальную ОС и репу чешут. И начинают несуществующие спецсимволы удалять командой sort. Правда, вас таких альтернативных меньше одного процента. Что и нормально, я щитаю. Обломись, в линукс почти все пришло из юникса в части командной строки. Так что не на тех бочку катишь. То что ты не смог осилить лаконичные команды баша на должном уровне, а предпочел 2х звенные повершелла - опять же не твоя вина. Не всем дано. Я тоже не осилил, C/C++ для меня понятней.Вот тебе ТЗ, раз такой вумный. Сразу скажу: я не парился ни с башем ни с цмд, решил просто и универсально задачу на питоне. Итак имеем: 1. Файл со списком масок файлов (порядка 4000 уникальных). Одна маска на одной строке. 2. Папку-источник с туевой хучей мелких до 1КБ файлов, среди которых есть удовлетворяющие списку в файле. Доступа на запись в папку нет. 3. Папка-приемник. Нужно: С периодичностью в, скажем, 10 минут копировать файлы из источника в приемник с условиями: 1. Имена файлов должны удовлетворять списку в файле с масками. 2. Файлы уже однажды переложенные (в том числе в предыдущие сеансы работы скрипта), трогаться не должны. 3. Имена файлов и дата+время в которое они были скопированы должны логироваться. Жду решения на повершелле или цмд. Братюня, читай лучше http://habrahabr.ru/blogs/nix/122179/ а серьезные темы оставь взрослым дядям =) И что ты хотел этим сказать? Что ты прочел эту статью? Ну поздравляю, я не осилил - не интересно. :lol:Кстати, специалист: CMD он EXE. |
|
|
19.6.2011, 14:23
Сообщение
#19
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
|
|
|
19.6.2011, 14:28
Сообщение
#20
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Или на c# Или на С, чего парится? Запустил прогу и всего делов...Завязывайте уже эту фаллометрию с цифровыми микрометрами, а то посторонние могут подумать, что дефолтный шелловый язык - это в ОСе Главное Все. Я рад что Вы меня поняли. Осталось нашему строллившемуся коллеге понять. А то он все башем да цмдой, башем да цмдой...
|
|
|
Текстовая версия | Сейчас: 11.6.2024, 5:42 |