Ads
Comments 241
+3
конечно стоит
тут конечно могу много кричать, что винда — г… но и т.д., но она есть и ей можно\нужно\приходится пользоваться
+7
откройте для себя PowerShell и продолжайте, было бы интересно почитать
0
Ну вообще-то говоря я и про cmd могу еще как минимум пару статей написать )
А PowerShell — мне казалось, что это уже серьезное программирование… или я не прав?
+2
power shell серьезен ровно на столько на сколько захотите :) можно использовать как аналог cmd, можно писать сложные скрипты
-4
powershell — это ебанацтво а не программирования. вы издеваетесь.

wmi вам в зубы и программируйте хоть запрограммируйтесь.
+1
Мой комент к статье habrahabr.ru/blogs/i_am_insane/60084/ подвиг вас написать такую прекрасную статью, а его (и меня) так нещадно заминусовали ((

А вообще конечно продолжайте.

По поводу того коммента беру свои слова обратно.
0
Огромное спасибо. Очень много в 'nux работаю с консолью. Даже и не подозревал, что в Windows'е можно сделать хоть какую-то часть.
Еще раз спасибо за статью.
0
типичное заблуждение юниксоидов уже лет десять не актуально
0
Так и не дошли руки, к сожалению. Я как-то с админством завязал и пересел на линукс. Но если есть пожелания — вы пишите, а я попробую либо ответить либо написать…
0
так кто же против, я вот тоже люблю баш, когда пишу скрипты на хостинге, и cmd, когда на своей машине )
0
Не спорб, bash — это отлично.
Просто так сложилось, что я работал под виндами.
И очень многие виндовые админы считают, что консоль никак не поможет в работе.
А я убедился в обратном.
А вот про bash все знают, что в линуксе консоль — самое главное :))
0
зато начинавшие с юниксов легко и быстро осваивают виндовую консоль
+1
интересно конечно, но я бы оторвал руки тем кто придумал имена переменных. неужели нельзя было придумать что-то более читабельное и запоминающиеся? (вопрос риторический)
0
Подозреваю, что тут просто вопрос в уровне и развитости языка…
Все-таки это не C, не Руби, и не Питон ))
0
нам недавно препод по ОС байку рассказал… как раз про имена.

Были годы бородатые. И тут законники придумали создать свою ОСь на основе DOS.
В итоге, название получилось «Альфа-ДОС».
Все было переведено на русский. и вот сюрприз — даже команды!
Захотели ввести первую команду. Вводят dir — ничего. Вводят дир — ничего.
Думают, малоли они знают про unix и вводят лс — ничего.

открыли ПОМОЩЬ.
нашли эту команду — КАТ.

но, как оказалось это пол беды.
Захотели преподы подсоединить мышь советскую. Воткнули и начали искать драйвер mouse.sys.
Аналогов типа мышь.сис, мышь.sys, крыса, манипулятор — ничего нет.

в итоге еще немного почитав маны — обнаружили — КОЛОБОК.sys!

так что то что оно хотя бы на англицком — это уже хорошо )
0
Для SQL скриптов, которые хранятся в SVN'e раньше пользовался командой, которая хранится в .bat файле:
for %%i in (*.sql) do @sqlcmd.exe -E -b -S «ServerName» -i "%%i" -d «DBName»

Использовать её перестал, когда понял что for… do… берет файлы не известно в каком порядке…
Собственно мой вопрос: есть ли возможность получить список файлов отсортированным по дате? от самого старого к новому…
+1
Можно получить список файлов и папок, упорядоченный по дате
dir /od /b

Потом, уже известным образом, его можно распарсить, вытащив строки с *.sql, например в отдельный файл.
а потом просто для кажой строки выполнить описанное вами действие.
+1
а мне сама виндовая консоль не нравится, очень много неудобств по сравнению с bash и terminal.
не вставляет и не копирует по {shift,ctrl}+Ins, и практически неудобное рудиментарное автодополнение и неправильная логика истории.
я искал нормальную консоль для винды, но все-таки цугвин поудобнее будет.
0
Ну копировать очень удобно просто по Enter… А вот вставлять — да, согласен.
Но! Я в основном писал про пакетные файлы, которые пишутся в основном в блокноте, Notepad++ и иже с ними. в которые можно копировать и вставлять без всяких проблем.

А еще на виндовую консоль, так же как и на линуховую, можно перетаскивать файлы. Что устраняет большую работу по впечатыванию путей и имен ))
0
вставлять можно правым кликом, у меня по крайней мере так в WinXP.
UFO landed and left these words here
+7
Для любителей еще можно в качестве командного интерпретатора для Windows попробовать Python.
Еще бы терминал получше.
+2
Под python'ом заплюсуемся. Сколь нибудь сложные скриптики уже на порядки удобнее писать на питончике. Универсальнее (чем PowerShell, все-таки кроссплатформенность, не говоря о cmd), привычно, доки хорошие (читать питоновский мануал в .chm на порядок удобнее чем читать вывод command /?).
+1
и что это меняет? ) впрочем это не главная причина, а главное, то что bat-скрипты очень неудобно отлаживать и сообщения об ошибках не такие информативные ну и т.д.
0
он не совсем под то заточен.

например попробуйте написать аналог PSh

ls -rec | sort LastWriteTime

кстати, интересно было бф увидеть аналог на ipython
0
Я же написал «Сколь нибудь сложные» ) для простых да, хватит и cmd. Впрочем, PowerShell я не использую почти принципиально ) Использую порты unix utils, bash, etc… когда бывает необходимо, но чаще python.
0
Ну с принципами не поспоришь, а все-таки интересно, как бы это выглядело на ipython.
+2
да хоть как-то так:

import os, glob

print '\n'.join(sorted(glob.glob('*'), key=lambda f: os.stat(f).st_size))


хотя предупреждаю: python не создан для написания таких вот one-liner'ов! Этот пример скорее показывает очень плохой стиль кодирования на питоне )
0
1. не вижу рекурсивного обхода вложенных папок ( параметр -recurse в ls)

2. Меня тут убедляли что в ipython передаются объекты — а тут работа со строчками — это чистый питон а не АйПитон.

3. Шелл в отличии от скриптового языка как раз для ванлайнеров
+1
ipython тоже не использую (по крайней мере, как-то не надобилось)… и oneliner-ы предпочитаю не писать… если нужна некоторая функция проще и правильнее 1 раз написать скриптик и его использовать…
0
1) проще, потому что вы потом просто его используя не напрягая мозг на вспоминание аргументов комманд и самих комманд, етц, а 2) правильноее, потому что минимизирует ошибки связанные с п. 1
+1
а если дествие нужно ровно один раз?
я, например, не напрягался для указанного ванлайнера совсем. А у вас пока рекурсии нет даже.

Я думаю, есть класс задач для которых шелл лучше, чем скриптовый язык.
0
ну в вашем случае я бы использовал что-то вроде написанного тут

habrahabr.ru/blogs/windows/60604/#comment_1655069

просто мне, как прикладному программисту (а не системщику) весьма не часто выпадает работать в консоле, в основном же во всяких IDE, и прочих средах разработки. И, да, все написанное мною выше, по большей части мое имхо.
Но подчеркиваю, работай я плотно с консолью — выбрал бы баш&co чисто из идеологических соображений.
0
iPython не разрабатывался как конкурент PowerShell, там sh режим больше для галочки. Посмотрите лучше на geophile.com/osh/ он более PowerShell-подобный. А ещё что-то в моей Убунтекогда-то бегало HotWire называлось.
0
Как раз насчёт питона. Написал насколько консольных скриптов для настройки среды питона под окошками.
В основном настройка путей потому что стоит паралельно 2.5 и 2.6.
wiki.sasnyk.name/Home/кулінарна-книжка-починаючого-пітонера/python-26-install-and-setup
Но вот с чем столкнулся. Эта гадина камандный интерпритатор по разному обрабатывает команду
Setlocal Disabledelayedexpansion на разных версиях виндовз. Более того при разных настройках (ключи в рэестре) винды она отрабатывает по разному. По этому как написано в статье совсем отвязаться не удалось, потому что писать совсем универсальный скрипт это плодить монстрика строчек на 50.
+2
Предпочитаю Cygwin и не заморачиваться особенностями виндовой консоли.
+3
Можно развернуть: предпочитаю Powershell и не заморачиваться особенностями линуховой консоли — кто с какой стороны смотрит.
-1
Не видел реализаций powershell под linux.

Еще не наталкивался, чтобы на информационных ресурсах выкладывали powershell скрипты, в отличии хотя бы от bash.

Так что смысла в powershell не вижу. Лично мне безразлично какой скриптовый язык изучать, но я хочу иметь возможность пользоваться написанными скриптами под максимальным количеством платформ + хотя бы для одной из них этот язык должен быть родным.
0
Powershell — штука пока ещё новая, будут выкладывать — никуда не денутся. Дайте сроку хотя бы ещё два года. На сишарпе тоже не сразу всё появилось, а время летит быстро — теперь один из самых распространённых языков.

По поводу кроссплатформенности — согласен. Но здесь тоже может всё измениться (есть же Моно), да и не всем актуально.
+5
Когда писали про перенаправления, могли бы упомянуть про «устройства».
copy con file.txt
Перенаправляет вывод с клавиатуры в файл (CTRL+Z — завершение ввода).
type file.txt >prn
Печает на принтере file.txt

А TAB, может кто не знал, умеет дополнять имена файлов и папок.
0
> А TAB, может кто не знал, умеет дополнять имена файлов и папок.
не TAB, а Ctrl+F по-умолчанию?
UFO landed and left these words here
0
Да, файлы устройств стоило упомянуть. Кстати, именно из-за файла устройства «con» Винда не даёт создать файл с таким именем (хотя бытует ошибочное мнение, что это якобы из-за того, что у Гейтса было прозвище «Con» — «зубрила, ботаник»).

>А TAB, может кто не знал, умеет дополнять имена файлов и папок.

Вот только делает это через такую задницу, что порой хочется взвыть. К примеру, если автодополняем имя каталога, содержащее пробел (типа Program files, Documents and Settings, ...), весь путь будет взят в кавычки. А курсор, разумеется, будет стоять после закрывающей кавычки.
Плюс ещё слэш после автодополнения каталога не ставится — приходится ставить вручную.
Ну и так далее…
-1
Cygwin+bash+puttycyg и вы навсегда забываете об этом кошмарном cmd.exe.
-2
а потом format c: и устанавливаем linux… :)

нет cmd.exe есть cmd.exe!!! (PowerShell тоже ОК)
сам пользовался во времена RPC експлоита (kaht II), шелл способен на многое!!!
-1
я прокомментировал человека, говоря о том, что cmd.exe забывать нельзя!!!
т.к. это универсальное средство + не продукт третьих лиц, присутствует в любой установке (если не запрещено)
и подтвердил, что пригодно для использования в административных целях и не только!

PS в связке с VBS очень мощно.
+1
Не нужна-ну нужна была. А пару дней назад появилась необходимость с удаленного компьютера регулярно сбрасывать данные ipconfig себе на почту. Почесал в затылке и не нашел ничего лучшего, как батничек написать для консоли.
Так что рано консоль со счетов сбрасывать. Спасибо за статью.
-17
Винда говно, но с ней приходится работать.
Пишите еще — до тех пор пока bash не портируют на винду ваши посты будут актуальны.
0
>Пишите еще — до тех пор пока bash не портируют на винду ваши посты будут актуальны.

Вас в каком году заморозили? Баш на винду портирован хренадцать лет назад, причём со всеми основными утилитами типа grep, find и т.д.
-3
Поправьте 2 ачипятки в предложении, плз: "… А уж как (з)дорово одним нажатием на bat-ник уст(а)навливать ..."
0
Не пойму что-то минусующих, сообщать об ошибках в посте уже не модно?
0
Ну как я успел вникнуть, о них модно писать на почту.
Но все равно спасибо. Все давно поправлено :))
+1
В свое время проходили по информатике. Весьма полезные между прочим знания. Пригодились мне не раз. Жаль, что сейчас на уроках информатики больше изучают ворд. )-:
0
Спасибо за статью.
Не подскажете ли как можно запустить из командной строки некий исполняемый файл и узнать pid созданного процесса?
0
Классная вещь, позволяет запускать что попало даже на удаленных компах
(при наличии прав конечно же)
-1
Через командную строку никак, мона на C и WinAPI набрать программку короткую которая создает процесс и выводит его pid и потом запускать через cmd.exe.
+2
а можно и встроенными средствами.
Есть такая замечательная команда tasklist во всех виндах начиная с ХР.

Работает так.
Запускаете программу bla.exe
start bla.exe
tasklist /fi "imagename eq bla*"
0
и собственно tasklist /s computername :) +taskkill — творят чудеса.
0
К сожалению если запущено уже несколько bla.exe мы не сможем отличить один от другого ;)
0
Отсортировать по PID и выбрать с наибольшим? :)
Хотя это будет гадание, и можно ошибиться.
-8
ставим cygwin & bash и не тратим время на изучение всяких дурацких мастдайных PowerShell'oв
-1
Ну сколько ж таких умников! Уже третий в посте — я не понимаю, почему мне стоит потратить время на баш и цигвин, а не на повершелл? Чем один лучше другого? По-моему, исключительно вопрос вкуса; а в перспективе Повершелл даже интереснее.
UFO landed and left these words here
UFO landed and left these words here
0
проще в использовании или проще по устройству?

что проще — взять готовый поток объектов или распарсить текст и выделить структуру в нем?
UFO landed and left these words here
0
по мне PSh проще по использованию — комадлеты проще комбинируются чем то, что выдает и парсит текст
-1
Возьмите тогда лучше молоток. Компьютер в принципе сложен и неинтуитивен.
UFO landed and left these words here
0
Ну это уже выпендрёж. Я пользовался повершеллом и не один раз. Очень удобно. Если думаете, что неудобно — можете пояснить, в чём именно.
UFO landed and left these words here
0
Нет, погодите, я не хочу устраивать разборки, но всё началось с вашей реплики «powershell в данном случае — микроскоп с пластмассовыми линзами».

Эта реплика абсолютно ничем не подкреплена и ничуть не меньше моих реплик зашкаливает по уровню чего угодно. Мне идеология PowerShell кажется вполне разумной. И если вам конкретно не нравится что-то в её архитектуре — говорите предметно, а не абстрактными нападками.
UFO landed and left these words here
0
Стоп!
А Вы уверены, что эти команды идентичны?
Пропускаются ли у Вас строки пр парсинге? итд…
UFO landed and left these words here
0
Верно. Только одна закавыка: эта жуть «for /F» и т.п. — это cmd.exe, а никакой не Powershell. Такие вот дела :)
Повершелл больше похож на язык высокого уровня а-ля PHP.
UFO landed and left these words here
0
А вы попробуйте.
Краткость — необязательно бонус. Кроме того, Powershell _позволяет_ использовать объекты, а не _заставляет_.
UFO landed and left these words here
0
Кроме того не забывайте, что
For /f итд — это ВСТРОЕННЫЕ воозможности. А повершелл, пхп и даже пито совсем не обязательно встроены!
0
тогда-уж лучше Microsoft SFU:
ru.wikipedia.org/wiki/Сервисы_Microsoft_Windows_для_UNIX
от cygwin у меня мурашки…

а лучше юзать cmd.exe или powershell
+ SysInternals
0
в топку, используй павершел, там все тоже + можно запрограмить ваще все что хочешь, есть доступ к комам + дот нет!
0
type file.txt >prn = copy file.txt prn

еще забавно copy con prn печатать с клавиатуры на принтер. Печатает после нажатия Enter
+1
До кучи к UPD2:

Можно вводимый с клавиатуры текст сразу в значение переменной положить:

SET /P variable=[promptString]

А также извлекать подстроки и проводить вычисление нехитрых операций:
SET /A выражение

В общем, добро пожаловать в «SET /?».

+1
Мне вот что кажется:
1) cmd.exe всё же слабоват. Умеет не слишком много, да и удобство (тех же FOR-циклов) сомнительное.
2) Будущее за Powershell, но, увы, ждать ещё долго, пока он будет в качестве официальной части системы стоять везде, на любом компьютере.
3) Пока в качестве альтернативы пишу скрипты на VBscript — не так модно, конечно, но исполняется на любом Windows-компьютере.
+2
Насчет «ждать долго» — 2008 сервер уже как бы реальность, и если вы будете использовать server core — то Powershell у вас не будет выключаться на компьютере )))
Во всус он уже добавлен. Я потихоньку в нем разбираюсь — рулю некотороые вещи в офисе через него. cmdlet`ов уже куча для PS.

Вывод: PowerShell — настоящее, а не будущее.
0
А вы посмотрите, что мне выше пишут:

«Не видел реализаций powershell под linux. Еще не наталкивался, чтобы на информационных ресурсах выкладывали powershell скрипты, в отличии хотя бы от bash. Так что смысла в powershell не вижу.»

Моя позиция ближе к вашей, но пока не всё так быстро. Действительно нет порта под линукс. Да и до ситуации, когда я смогу послать любому товарищу cmdlet и надеяться, что с вероятностью 99% на его Windows-машине всё заработает без лишних вопросов, ещё надо дожить. :)
0
Порт под линукс думаю появиться когда в нем надобность появиться))
Насчет товарища да, но напоминаю что у некоторых товарищей и w2k до сих пор стоит, мы же ориентируемся на будущее ;). А наше настоящее — PS нужно учить!
0
>> Еще не наталкивался, чтобы на информационных ресурсах выкладывали powershell скрипты, в отличии хотя бы от bash. Так что смысла в powershell не вижу.»

На майкрософте цэлый портал им отведён Technet script Center www.microsoft.com/technet/scriptcenter/default.mspx.
да и poshcode.org/
Информационные ресурсы ресурсам рознь, не ожидаете ведь вы увидеть powershell скрипты на ЛОРе?

P.S. Сам лично я скриптую на Python под форточками.
0
А я люблю консольку винды.
Для себя написал несколько скриптов на VBS, такие как whois чекалку и Парсер Gismeteo.
И в принципе время от времени пользуюсь стандартными командами.
UFO landed and left these words here
0
Одна из самых используеммых мной команд виндовой консоли sc

SC is a command line program used for communicating with the Service Control Manager and services.

Позволяет работать в том числе и с удалёнными серверами…
UFO landed and left these words here
0
А я для выполения некотрых задач использую nnCron, который тоже способен на очень многое.
+2
Я несколько недель жил в квартире, где не было нормального интернета. В итоге от скуки пришел к тому, что стал читать стандартную справку в windows. Так вот, в этой справке есть очень много интересных вещей. В итоге я пришел к выводу, что консоль в винде очень даже ничего, и ей вполне можно пользоваться. Писать вполне себе функциональные скрипты и делать много чего еще. Так, например, благодаря справке я узнал, что в винде есть свой планировщик заданий, аналог кронтаба (AT.exe), есть своё sudo (runas), есть даже система гибкая система назначения прав.

Так что люди, читайте справку!
+7
Я несколько недель жил в квартире, где не было нормального интернета. В итоге от скуки пришел к тому, что стал читать стандартную справку в windows. Так вот, в этой справке есть очень много интересных вещей. В итоге я пришел к выводу, что консоль в винде очень даже ничего, и ей вполне можно пользоваться. Писать вполне себе функциональные скрипты и делать много чего еще. Так, например, благодаря справке я узнал, что в винде есть свой планировщик заданий, аналог кронтаба (AT.exe), есть своё sudo (runas), есть даже система гибкая система назначения прав.

Так что люди, читайте справку!
0
Вобще команда at взята из *nix систем я бы назвал это некий аналог кронтаба. Спасибо что подсказали о ее существовании в Windows.
0
Если что-то есть, и до сих пор обсуждается и на одном известном форуме все еще обновляется тема «Задачи на bat-файлах», значит оно где-то да нужно. Консоль в Windows пусть и далека по функциональности от bash или PowerShell, но иногда ничего другого больше нет, да в принципе и не нужно. У меня много где работают мелкие bat файлы, которые получают некие данные, а потом кладут их в сетевую папку, где их забирают скрипты на bash. Я использую и то и другое, причем так, как удобнее мне, и не страдаю убеждениями всякими, что что-то лучше, а что-то хуже. Главное, чтобы работало, причем надежно.

А еще интересно, как ненавистники консоли в Windows будут узнавать mac адрес, пинговать? Не всегда будет время и возможность поставить PowerShell, а работу надо будет делать и быстро, причем не всегда такую тривиальную. Чем дальше я расту как системный администратор, тем больше понимаю, что ругать что-то очень просто, особенно то, что в силу ”религиозных” предпочтений изучать не хочется. А хороший специалист просто умеет и пользуется всем, как ему удобно, а не лезет узнать mac адрес в свойства сетевой карточки, так как отвергает всякую консоль в windows и о команде ipconfig даже слышать не хочет.
+1
вы не путайте консоль и программы, которые из нее можно просто запустить и прочесть их вывод.
Консоль в винде не предназначена для программирования, даже для сисадминов (а программисты способны писать например на perl\python....) Для программирования есть WSH, VBS, Jscript и т.д. встроенные в ОСь средства…
-1
Я пользуюсь консолью часто, но bash а не cmd.exe так как там даже исории команд нормальной нет и мелочей вроже ^R или ^L. Правда. надо признать cygwin довольно тормозной (вроде из за того что плохо эмулирует форк), такое ощущение что за 286 сидишь, но все равно удобно.
0
в примере из раздела «Пофантазируем» можно ли организовать какую-то обработку исключительных ситуаций (выделил, чтобы было более заметно про что речь в потоке комментариев). например, если одна из машин недоступна — сеть отвалилась, что произойдёт? возможно ли как-то сделать так, чтобы скрипт отработал до конца не вываливаясь с ошибкой, и в каком-нибудь виде проинформировал, что, во-первых, были косяки, а во-вторых, что конкретно это были за косяки.
спасибо.
-2
Я периодически пользуюсь этим в административных целях (именно cmd.exe), и, надо сказать я ненавижу этот хлам всем сердцем
0
нужно, под 2k PS плохо работает :)
Просто когда нужно выполнить какую-нибудь хитрую настройку стаи компьютеров, выхода не остается…
0
такие штуки вроде «if exist… move» достаточно неплохо
автоматизируют рутинные процессы переносов файлов по маски почти как фильтр
0
Думаю, не стоит продолжать.

Лучше пойти на следущее поколение — Windows script Host или его развитие — Power Shell.
0
а вот вопрос на засыпку, из студенческого детства.
может кто-то ещё помнит как в одноранговой сети повесить удаленный win98, используя консоль и знания о расшаренных на ней папках? :)
UFO landed and left these words here
UFO landed and left these words here
0
с одной стороны громоздкий как рантайм
с другой стороны легкий как синтаксис

ls *.paсk | %{ unpaсk.exe $_ -$_}
0
Кстати, по поводу перенаправлений. Почему-то многих удивляет, что cmd понимает конструкции типа 'foo.exe >log 2>&1' или 'bar.exe 2>errlog'. Кстати, для логов батника может оказаться полезным 'echo some text >&2'. Ну, и про пайп, думаю, стоило сказать.
0
Под DOS работало echo. |format a: > nul
Форматировало дискетки без предупреждения.
0
Эти статьи на rsnd.ru помогли мне в своё время в универе, когда мы это проходили. Отличный ресурс.
0
Это не критично, но .bat по определению — «Пакетный файл MS-DOS». Вы же написали статью про администрирование Windows, поэтому считаю, что и файлы нужно называть соответствующим образом — .cmd, что обзывается как «Командный сценарий Windows NT». Исполняются оба типа скриптов одинаково, .cmd только под DOS/Win9x не запустятся.
П.С.: на rsdn.ru тоже неплохо написано, большая статья, рекомендую ознакомиться.
0
Как я понимаю, разницы по сути нету, зато bat-ники запускаются в win 9x тоже?
0
Да, Вы правильно понимаете. Но почему-то написали, что пользуетесь cmd.exe, а не command.com. Просто cmd.exe «понимает» bat-файлы написанные для command.com, но родными для cmd.exe всё же есть cmd-файлы.
Я не то, чтобы цепляюсь, это так, для общего развития :)
0
Удобно .cmd-шки делать для управления группой задач, я себе так делал запуск MySql, Apache, ApacheMonitor и mysqlmonitor.
Гораздо удобнее чем все запускать по очереди.
0
for /F «eol=; tokens=2,3* delims=,» %i in (myfile.txt) do @echo %i %j %k

О_о нифига не unix way
0
если я правильно понимаю то, что там происходит, что как-то так
cat myfile.txt | awk -F, '{print $2 $3}'
насчет комментариев не понял, но если они обозначаются каким-нить символом, то между cat и авкой вставить grep -v
Хотя, я повторяю, я не совсем понимаю что там происходит, а проверить негде — везде линукс
0
Да, вы правы — там тема в том, что закомментированная строка начинается с;
0
Ну да, делается через grep -v
то есть получается
cat myfile.txt | grep -v '^\s+;' | awk -F, '{print $2 $3}'
по-моему намного нагляднее того, что в топике. очень много спец символов. хотя человека, не знающего регэкспы, строка '^\s+;' заставит запаниковать =)
0
Команда grep фильтрует свой ввод с помощью регулярных выражений
^\s+; означает
^ — начало строки
\s — пробельный символ(пробел, таб, \n)
+ — 1 или больше предыдущих символов(в нашем случае пробельных)
; — точка с запятой =)

Вообще, если вы еще не знакомы с регэкспами — настоятельно рекомендую. Реализация их есть, наверное, везде.
Самая популярная имплементация — PCRE(Perl Compatible Regular Expressions) — они умеют делать все и даже чуть более.
Хорошо описаны в манах по перлу, например вот тут (http://perldoc.perl.org/perlretut.html)
0
Нет, вы меня не поняли. С регэкспами я знаком еще по перлу. Вопрос заключался вот в чем:
cat myfile.txt | grep -v '^\s+;' | awk -F, '{print $2 $3}' — это bash? или какой-то язык?
0
ну да, он, родной. правда от баша тут используется только пайпы, остальное делают отдельные команды
/bin/cat, /bin/grep и /usr/bin/awk
но ведь это и есть unix way =)
0
Ну, собсна, и классно. Я про это уже писал выше, что консоль в линухах — это мегакруто. Просто многие не верят, что она что-то дает в виндах.

И еще важно, не задействован ли в вашей клманде какой-нить перл…
То есть я правильно понял, что программы, встроенные в никсы по умолчанию поддерживают регэкспы?
Ну это правда очень здорово.
0
Нет, не правильно. навскидку я знаю 3 программы с регэкспами: grep, sed и перл.
0
Тогда не совсем честно, ибо перл может быть и не встроен в ось ))
0
Да при чем тут перл?
Эти программы либо сами имеют имплементацию регэкспов, либо используют libpcre.
Да, сейчас вот смотрю на исходники grep — там есть код регулярных выражений.

Все 3 программы входят в base system, так что они есть всегда везде. Да и перл всегда везде есть =)
+1
Ну что я могу сказать?
Да славится линух, великий и прекрасный!
0
Я ж и не спорил.
Просто надо понимать осознавать, что и в виндах кое-что можно )))
0
Ну я не спорил, что что-то можно. Я к чему это все говорю — в винде-из-коробки очень мало утилит всяких разных и писать полноценные скрипты довольно сложно.
0
>навскидку я знаю 3 программы с регэкспами: grep, sed и перл.

Ещё как минимум find
0
Можно еще рассказать про проект console и использование MiwGW-утилит. Ну, это для фанатов =)
0
Я долго искал эскейп символ в cmd т.к. мне нужно было использовать > символ, кавычки к сожалению тут не работают. И о чудо когда после пару часов поиска я узнал что эскейп символ это — ^. Ниже пример
@echo ^<example@example.com^>
выведет нам
<example@example.com>
0
А вот как решить такую задачу:
При подключении к беспроводной сети А, винда должна подключать сетевые диски по указанному пути. А при подключении к сети Б, отключать эти и подключать другие.
Точнее при отключении от любой сети, сетевые диски чтобы автоматом также отключались.

Что для этого нужно? PowerShell?
0
Вполне вероятно, что это может и Kixtart, если уж речь идет о скриптовых языках.
как вариант можно в at.exe задать по расписанию пинговать некий комп, и, в зависимости от того, пингуется ли, пробовать подключитсетевые ошибки.
0
Да, забыл написать.
стевые диски подключаются командой
net use U: \\comp\share
а удаляются
net use u: /delete

Как вариан можно парсить ipconfig и в зависимости от того, какой айпишник у компа совершать определенные действия.
0
И правда. Известно как загнать ipconfig в текстовый файл. Осталось из него прочитать инфу, и в зависимости от неё выполнить нужные команды. А скрипт необходимо запускать автоматически с помощью планировщика заданий. Вероятно там можно настроить зависимость от подключения/отключения к сети.
0
Очень интересная статья, с удовольствие почитал,
Но вот в Windows XP Пример:
FOR /F «skip=3 delims=\ » %%A IN ('NET VIEW') DO ECHO %%A>>c:\comps.txt
Почему-то выдает:
Непредвиденое появление %%А.
Что я делаю не верно?
+1
Потому что если работаете из коммандной строки, а не из bat-ника, то нужно писать с одним %:
FOR /F «skip=3 delims=\ » %A IN ('NET VIEW') DO ECHO %A>>c:\comps.txt
0
Мне тоже нравиться консоль винды. Единственное, что мне не нравиться, это отсутствие конвеера. Непривычно и не удобно.
0
Я пршу прощения за свою необразованность, но конвеер — это что?
0
Ну, например, я линуксе я часто пользуюсь конвейером:
cat squid.conf | grep -v "^#" | grep -v "^$" ну или как то так)
В винд консоли я подобия не нашел.
Точного определения не подскажу, не знаю)
0
на, как я понимаю, в винд консоли то же самое можн реализовать просто вкладывая одну команду в другую. а еще в винд консоли тоже есть &, && и ||
0
Хорошо. Задача. Посмотреть файл hosts в винде.
Некоторые строчки закомментированы символом # в начале.
Выведи консолью винды содержимое файла без комментированых строчек.
0
echo off
for /F "eol=# tokens=1,2,3*" %i in (C:\Windows\System32\drivers\etc\hosts) do echo %i %j %k %l


так много параметро на случай, если у тебя в файле hosts может быть много записей на один айпишник…
0
Как вы можете заметить, это практически идентично тому, что написано в самой статье )) только парсится файл хостс и добавлен лишний аргумент ))

А, еще поменял eol.
+2
Например вот так:
findstr /B /V # C:\WINDOWS\system32\drivers\etc\hosts

или так:
type C:\WINDOWS\system32\drivers\etc\hosts | findstr /B /V #

Переопределение вывода с помощью | работает в консоли еще со времен dos-а практически так же как в юниксе, разве что нет команды tee.
Называется это pipes, не знаю как оно будет по-русски, наверное потоки.
0
Круто! этого не знал уже я )))
Но в том случае, если нужно не только вывести, а потом еще с этим как-то работать, то у меня вариант в чем-то лучше. ибо все по переменным раскладывается ))
+2
чуть менее чем полностью вся эта информация содержится в стандартной справке
+1
Вы правы, но чтобы почитать справку, надо знать что искать :)))
я же здесь не все команда рассказал, даже не про все возможности for.
Зато теперь люди зайдут в консоль и наберут for /?
И, вероятно, узнают многое.
0
> Зато теперь люди зайдут в консоль и наберут for /?
ИМХО с этого как раз и надо начинать, а потом уже читать подробные руководства с примерами
0
Так это написано :))
Практически в самом начале…
Только не про For, нокакая разница?
0
в виндовой консоли есть много чего… мно что умеет… стоит ещё цигвин, но его пришлось поставить из-за того что e-texteditor его просил…
под винду есть обёртка для cmd называется Console2 копировать вставлять умеет… растягивать можно… вопщем я пользуюсь и не жалуюсь… мне нравится…
0
Я рекомендую хотя бы посмотреть в сторону ConEmu. Несколько отзывов на StackOverflow. На мой взгляд (как разработчика) эта обертка намного более гибкая в плане настроек и богаче возможностями. Например для фанатов есть «искаробочный» Quake/Tilde режим, умеет ANSI X3.64, позволяет выделять мышкой как «текстовые» так и прямоугольные блоки, можно задать различные настройки в зависимости от активного консольного приложения, запуск новой консоли из командной строки ранее открытой, и т.д. и т.п.
0
Рождается потом такая шизофрения:
clear.cmd
— :dirs
for /F «usebackq delims==» %%a in (`blacklst.cmd dir`) do rd /s /q "%%a"

:files
for /F «usebackq delims==» %%a in (`blacklst.cmd file`) do del /f /s /q "%%a"
— blacklst.cmd
— @if "%1"=="" goto end
@if "%1"==«dir» set param=/ad
for /F «eol=; tokens=1*» %%a in ('type blacklst.txt ^| find «path „') do ^
for /F “eol=; tokens=1*» %%d in ('type blacklst.txt ^| find "%1 "') do ^
call dir /b /s %param% "%%b"\"%%e"
:end
— blacklst.txt
— dir VShell*
dir LizardTech*
dir WinRAR*

path %USERPROFILE%
path %ALLUSERSPROFILE%
path %windir%\system32\config\systemprofile

file secure*.lnk
file adobe*.lnk
file Windows Update.lnk
— Оно работает *)
0
Испортилось чуть.

clear.cmd
:dirs
for /F «usebackq delims==» %%a in (`blacklst.cmd dir`) do rd /s /q "%%a"
:files
for /F «usebackq delims==» %%a in (`blacklst.cmd file`) do del /f /s /q "%%a"

blacklst.cmd
@if "%1"=="" goto end
@if "%1"==«dir» set param=/ad
for /F «eol=; tokens=1*» %%a in ('type blacklst.txt ^| find «path „') do ^
for /F “eol=; tokens=1*» %%d in ('type blacklst.txt ^| find "%1 "') do ^
call dir /b /s %param% "%%b"\"%%e"
:end

blacklst.txt
dir VShell*
dir LizardTech*
dir WinRAR*

path %USERPROFILE%
path %ALLUSERSPROFILE%
path %windir%\system32\config\systemprofile

file secure*.lnk
file adobe*.lnk
file Windows Update.lnk
0
Ну а что, все просто и понятно.
Писал я и такие логон скрипты, только еще и работу служб обрабатывал ))
0
тлько мне непонятно зачем стоят ссылки :dirs и :files

и зачем вот этот кусок:

blacklst.txt
dir VShell*
dir LizardTech*
dir WinRAR*
0
Из файла blacklst.txt берутся пути, где зачищать и список файлов и каталогов на удаление. Ну, удаляются как файлы так и каталоги с содержимым.

Зачистка качественная, тестировать только опасно *)

0
А как выключить компьютер через консоль по таймеру в Висте. В XP я использовал shutdown /s /t время_в_секундах. Но в Висте не могу разобраться. И можно ли вместо выключения переводить компьютер в спящий режим или делать гибернацию?
0
Выключение — ровно так же! shutdown /s /f /t 455
Режим хибернации — shutdown /h /f /t 455
0
без параметра /t все работает, а с ним просто выводится справка о shutdown
0
Либо у Вас проблемы с виндами, либо с синтаксисом. У меня все прекрасно работает. попробуйте зайти в командную строку и там набрать shutdown /?
0
Спасибо! разобрался. Время максимум 600 секунд оказывается, а я вводил больше (в XP несколько часов). Буду использовать at + shutdown.
0
Хы. Из забавностей.
Сколько лет прошло с создания этого скриптового языка, а паузы в bat/cmd файлах так и делаются только пингом на локалхост. Ноу эни эназа вэй, к сожалению :)
0
Мой самый любимый, в том смысле что «чистый» способ, без использования сторонних утилит
@echo off
:: Пример использования
:: Некоторые действия
echo Сейчас %time:~0,-3%
:: пауза на 15 секунд
call :sleep 15
:: Другие действия
echo Сейчас %time:~0,-3%
goto :EOF

:sleep
echo Пауза на %1 секунд...
set /a ftime=%time:~6,-3%+%1
if %ftime% GEQ 60 set /a ftime-=60
:loop
set ctime=%time:~6,-3%
if /i %ftime% NEQ %ctime% goto :loop
goto :EOF
0
Круто. Вы повергли в прах моё представление, что чуть-чуть умею писать батники :)
0
Проблема этого батника в том, что он не работает на больше чем 60 секунд. чоответственно, чтобы использоват его на большее количество времени приходится создавать переменные итд…
0
К проблемам ещё и то, что он процессор «кушает» циклом. Так что резонно задуматься всё же в сторону сторонних choice & sleep, с помощью которых delay делается на ура.
0
Ну все современные процессоры обладают механизмом обнаружения циклов, это +
А у чойса или слипа тот недостаток, что рядом с батником нужно держать «лишний» файл…
0
Померьте, насколько он жрет процессор и сравните с затратами сразу 100 пингов:
set process_count=100
set comm=start ping -n 20 127.0.0.1
for /L %%I IN (1,1,%process_count%) DO %comm%

… и скорее всего ваши пристрастия изменятся. :)
0
Проблема в том, что мы на самом деле не знаем точно, сколько времени идет пинг ))
0
Если это проблема (т.е. важен точный тайминг), наверное логично решать ее, используя соответствующие способы/утилиты, но не добавлять другую. ))

Как выше уже заметили, на платформе
Для программирования есть WSH, VBS, Jscript ...
Это не сторонние файлы и там есть Sleep(милисекунды).

Пакетные файлы знать в целом конечно хорошо, но после знакомства с WSH становится жалко времени, потраченного на изучение тонкостей cmd и отладку батников с условиями и циклами. :(
0
Да, согласен, есть утилита слип. Но веди можно и по секундам ориентироваться ))
Вот меня на WSH не хватило, нормального редактора для него нету, сам он устроен неинтуитивно…
0
нормального редактора для него нету

пожалуй, но все-таки кое-что можно найти
сам он устроен неинтуитивно

Может просто мануалов нормальных не попадалось? ресурсы и форум, ссылки, оригинальная документация (en).
Ну а на мой взгляд мало что сравнится в неинтуитивности с представлением условий-циклов-расширений языка пакетных файлов. :)
0
Ну, насчет того, что что-то есть, до уровня NetBeans не доходит ))
С чем действительно согласен — так это с неинтуитивностью языка пакетных файлов ))
Просто он иногда был нужен даже еще до того, как я узнал, что такое программирование ))
0
>timeout.exe /?

TIMEOUT [/T] timeout [/NOBREAK]

Description:
This utility accepts a timeout parameter to wait for the specified
time period (in seconds) or until any key is pressed. It also
accepts a parameter to ignore the key press.
Only those users with full accounts are able to leave comments.  , please.