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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)

Модерирует : gyra, Maz

Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 4
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
 
 
Старая версия первого сообщения

Всего записей: 9736 | Зарегистр. 12-10-2001 | Отправлено: 04:28 24-09-2002 | Исправлено: Elroir, 19:35 11-09-2007
bdfy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Надо организовать цикл по сути формирующий все комбинации из пяти (или больше ) по четыре с повторениями . Реально ли батником обойтись ? Есть пять разных текстур надо сделать переходные между ними (т.е текстуры стыков основных текстур ) - програмка для этого есть. Работает из ком. строки как  
pal2pacE.exe -combine v1.tga v2.tga v3.tga v4.tga v1v2v3v4.pac
где v1.tga v2.tga v3.tga v4.tga  - те самые основные текстуры (дальше v5,v6) ,а v1v2v3v4.pac - генерируемая переходная текстура в формате игры. Текстур переходных нужно много, если руками то надо набивать ком. строки  
pal2pacE.exe -combine v1.tga v1.tga v1.tga v2.tga v1v1v1v2.pac
pal2pacE.exe -combine v1.tga v1.tga v1.tga v3.tga v1v1v1v3.pac
pal2pacE.exe -combine v1.tga v1.tga v1.tga v4.tga v1v1v1v4.pac
pal2pacE.exe -combine v1.tga v1.tga v2.tga v1.tga v1v1v2v1.pac
и так далее. А строчек то сотни... как бы организовать это дело ?  

Всего записей: 977 | Зарегистр. 21-04-2004 | Отправлено: 00:10 13-09-2006
KapralBel



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

Код:
@Echo Off
For /L %%a in (1,1,5) Do Call :L1 %%a
GoTo :EOF
 
:L1
For /L %%a in (1,1,5) Do Call :L2 %1 %%a
GoTo :EOF
 
:L2
For /L %%a in (1,1,5) Do Call :L3 %1 %2 %%a
GoTo :EOF
 
:L3
For /L %%a in (1,1,5) Do Call :L4 %1 %2 %3 %%a
GoTo :EOF
 
:L4
For /L %%a in (1,1,5) Do Call :L5 %1 %2 %3 %4 %%a
GoTo :EOF
 
:L5
pal2pacE.exe -combine v%1.tga v%2.tga v%3.tga v%4.tga v%5.tga v%1v%2v%3v%4v%5.pac
GoTo :EOF
 

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 13:22 13-09-2006
bdfy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
Wow !  
Только их пяти по четыре надо было, а не по пять. т.е последняя строчка  
pal2pacE.exe -combine v%1.tga v%2.tga v%3.tga v%4.tga v%1v%2v%3v%4.pac
спасибо огромное. А можно ли придумать как что-то вроде прогресс бара ? а то все это действо минут 15 занимает...

Всего записей: 977 | Зарегистр. 21-04-2004 | Отправлено: 14:42 13-09-2006
Zitz

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Коллеги, помогите пожалуйста с проблемой. Из батника вызывается программа, потом анализируется код возврата, с которым она завершилась, что-то вроде if errorlevel 1 goto LABEL. Так вот, в 2000/XP все нормально, а в 9x errorlevel после вызова программы всегда равен 0. Насколько я понял дело здесь в том, что command.com в отличие от cmd.exe не дожидается, когда и с каким результатом завершится прога, а переходит к следующей команде (сама вызываемая прога 0 не возвращает ни при каких обстоятельствах). Как можно анализировать код возврата в 9х?

Всего записей: 47 | Зарегистр. 25-01-2005 | Отправлено: 15:19 13-09-2006
KapralBel



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

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 16:03 13-09-2006
Zitz

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну вот например такой батник:

Код:
 
@echo off
notepad.exe
echo go further....
pause
 

при работе в 2000/XP запускает блокнот, а потом ждет его завершения. И только когда блокнот будет закрыт, батник пойдет выполняться дальше и на экране появится надпись "go further". Если же запускать в 95/98, то запустится блокнот, и не дожидаясь его завершения пойдут исполняться следующие команды. Вот в этом-то и проблема - нужно чтобы в 9х дожидаться завершения вызываемой программы, а потом анализировать (с помощью errorlevel) код возврата. Понимаю, что вопрос наверняка простой, однако руководств по command.com (а не cmd.exe) найти сейчас уже сложно...

Всего записей: 47 | Зарегистр. 25-01-2005 | Отправлено: 08:22 14-09-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Zitz
Приведи полностью с обработкой ErrorLevel

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 10:02 14-09-2006
Zitz

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я не понял, для чего тебе полный пример, ведь я источник проблемы знаю и ее описал. Тем не менее привожу код. Программа oscheck.exe - определяет версию ОС и возвращает код (ноль никогда). А вообще в целом задача такая - определять из батника точную версию ОС.
 

Код:
@echo off  
oscheck.exe  
if errorlevel 2 goto WIN98
if errorlevel 1 goto WIN95
if errorlevel 0 goto ERROR
:WIN95
echo Windows 95
goto END    
:WIN98
echo Windows 98
goto END
:ERROR
echo No result... ERROR!
goto END
:END
pause  

Всего записей: 47 | Зарегистр. 25-01-2005 | Отправлено: 10:19 14-09-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Zitz
Кинь мне на KapralBel /хм. некий символ/ GMail.Com - эту утиль

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 10:43 14-09-2006
wader



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zitz
А прога oscheck.exe не гуевая? Если это твоя программа, сделай ее консольной.

Всего записей: 113 | Зарегистр. 26-05-2005 | Отправлено: 11:04 14-09-2006
Zitz

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
wader
Моя, гуевая. Только все равно command.com не дожидается ее завершения (ни ее ни любой другой) и код возврата не анализирует. Собственно весь вопрос в том как заставить ожидать завершения и анализировать возвращаемое значение...
 
Добавлено:
Точнее она не гуевая, а консольная (в смысле main а не WinMain), но скомпилирована без создания консольного окна

Всего записей: 47 | Зарегистр. 25-01-2005 | Отправлено: 11:08 14-09-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Zitz
Если не трудно то и исходники кинь (если С)
 

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 11:57 14-09-2006 | Исправлено: KapralBel, 12:35 14-09-2006
wader



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zitz
Есть такая фигня с GUI программами. Т.е. comand.com их просто не ждет, а консольные ждет, всегда.
 
Если прога консольная, то система за тебя создаст консоль.
А при запуске из bat файла будет использоваться текущая консоль, т.е. ничего лишнего на экране не появится.
 
P.S.
  Если собираешь в студии установи /SUBSYSTEM:CONSOLE в опциях линкера

Всего записей: 113 | Зарегистр. 26-05-2005 | Отправлено: 12:21 14-09-2006
KapralBel



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

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 12:25 14-09-2006 | Исправлено: KapralBel, 12:33 14-09-2006
Zitz

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
wader
Проблему решил.  

Код:
start /wait oscheck.exe

Так все работает. Но с консолью все равно попробую, спасибо.
 
KapralBel
Исходников с примерами определения типа операционной системы полно в инете и в MSDN.

Всего записей: 47 | Зарегистр. 25-01-2005 | Отправлено: 12:45 14-09-2006
wader



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

Цитата:
 

Код:
start /wait oscheck.exe

Так все работает. Но с консолью все равно попробую, спасибо.

Еще бы это не работало
 
А в win9x разве не ключ /W используется?

Всего записей: 113 | Зарегистр. 26-05-2005 | Отправлено: 12:57 14-09-2006
Zitz

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

Цитата:
Еще бы это не работало  

Так я собственно это и хотел выяснить

Цитата:
А в win9x разве не ключ /W используется?  

Да, это тот же самый ключ. Где ж ты раньше-то был?

Всего записей: 47 | Зарегистр. 25-01-2005 | Отправлено: 13:01 14-09-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Zitz
Мне не надо, я определяю тип системы другими методами
Я хотел помочь тебе
Там, где мне нужно стоит не батнички, а Kixtart

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 13:08 14-09-2006
ATZATZ



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет.Есть скрипт такого вида:
     ...
set /p more=enter filename:
set /p drive=ented diskname:
cd /d %drive%:\ &&dir /s %more%
      ...
Нужно выковырять оттуда путь найденного файла.Т.е диск:\папка\папка нужна помощь,ато  сам в for доконца въехать не могу

Всего записей: 38 | Зарегистр. 14-09-2006 | Отправлено: 14:53 14-09-2006
wader



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ATZATZ
А если файлов будет много?
Все пути нужны?

Всего записей: 113 | Зарегистр. 26-05-2005 | Отправлено: 15:05 14-09-2006
   

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru