![]() |
Модераторы: bartram, Akella |
![]() ![]() ![]() |
|
SovietMan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 7.12.2007 Репутация: нет Всего: нет |
Здравствуйте. Решил написать пару скриптов на batch-е, возникли вопросы.
1) Как напечатать пустую строку (переход строки)? Если просто написать echo, то output будет ECHO is on. 2) Как сделать так, чтобы команда echo не переходила на следующую строку, и следующая команда echo печатала на той же строке? 3) Есть ли аналог /dev/null в batch-е? Некоторые сообщения выводятся на экран даже при echo off (например, сообщения об ошибке). Как сделать так, чтобы не даже они не выводились? 4) Нашел я, как объединить команды в блок - взять в круглые скобки. Но... Вот я открываю скобки, начинаю блок, и внутри блока нужно распечатать закрывающую скобку, скажем, echo ). Проблема в том, что к закрытой скобке, даже внутри команды echo, интерпретатор относится как к закрытию блока. Можно ли сделать так, чтобы не относился, а просто напечатал? Что-то вроде символа '\' в Юниксе. |
|||
|
||||
regis |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 12.12.2005 Где: Москва, Россия Репутация: нет Всего: 7 |
На вопрос 3: аналог есть -- устройство nul:
Сделать редирект stderr можно как и в U*X: оператором 2> Например, prog ar1 arg2 2> _errors.log - переадресует диагностический вывод prog в файл _errors.log (работает во всех Win выше 2000, насчет Win 9x не уверен) На остальные вопросы надо подумать... --------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой. |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: нет Всего: 91 |
Попробую объяснить что тут написано. Печатаем на экран исходник bat файла с 23 строки (отсчет с нуля), на форуме этой строки не видно, но она быть должна в конце. Результат, т.е перевод каретки записываем во временный файл tmp. Через type tmp делаем перевод строк. Команда CLS очищает экран перед каждым выводом строк, таким образом мы добиваемся того, чтобы новая строка затирала старую. Строки со скобками готовим вне блока и пихаем в файла, после чего выводим через type уже внутри блока. В конце подчищаем за собой удаляя ненужные файлы. Добро пожаловать в ад... Если ДОС не принципиально советую изучать WSH (Windows Shell Script), они умеют работать и с файлами и с базами данных и с экселем и вордом, все это благодаря поддержки загрузки ActiveX компонентов. Это сообщение отредактировал(а) SABROG - 11.12.2007, 16:17 |
|||
|
||||
SovietMan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 7.12.2007 Репутация: нет Всего: нет |
SABROG:
Проблема, что новый текст, хоть и печатается на той же строке, затирает старый. Cls мне совсем не нужен. Я просто пишу такой скрипт, чтобы можно было легко распространять, запускать и редактировать, не устанавливая по возможности компиляторы и всякие .NETы, причем даже тем людям, которые не разбираются в программировании, а обладают базовыми знаниями компьютера. Для себя я бы и на С написал. Насчет ада - это точно. Видимо, майкросовтовцы не думали, что кому-то всерьез может понадобится batch, раз уж есть форточки. Кстати, как напечатать переход строки я нашел: echo. (с точкой в конце). |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: нет Всего: 91 |
WSH вроде идет еще с 95ой винды кажись, как щас помню в стандартной поставке еще пример был вывода графика в excel и кручение его в 3д плоскости.
Кстати на wasm.ru статья была интересная как написать любую программу под дос без компилятора. Только чтобы это делать постоянно надо обладать хорошей памятью. Сам как-то давно писал bat скрипт, который создавал исполнимый .com файл, инструкции которого все представляли собой печатные символы. Т.е. при желании в bat можно и вирусника впихнуть. |
|||
|
||||
regis |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 12.12.2005 Где: Москва, Россия Репутация: нет Всего: 7 |
Честно говоря, я бы просто посоветовал поставить под Win нормальный U*X shell, и работать с ним.
Для серьезного прогаммирования командный интерпретатор DOS/Win непригоден. --------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой. |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: нет Всего: 91 |
А если речь зашла о "поставить", то тогда лучше сразу Perl или Python.
|
|||
|
||||
SovietMan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 7.12.2007 Репутация: нет Всего: нет |
Ну вот, началось.
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Windows" | |
|
Запрещается! 1. Обсуждать взлом и делиться кряками 2. Способствовать созданию и распространению вирусов
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, December, bartram, Akella. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MS Windows | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |