Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Windows
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2015, 17:21   #1
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию Несколько вопросов по BAT-файлам

Чтоб не-плодить темы, решил задать все вопросы в одном посту.
Буду (пре)много благодарен, за любую информацию..

1) Можно-ли вывести строку/слово, другим цветом, или цвет можно задавать только для активной страницы целиком?

2) Можно-ли вывести картинку в досовское окно? Так и не понял.. Где-то говорят, что нельзя, а кто-то предлагает сконвертировать в hex и выводить в кодированном виде.

3) Как вычислить время выполнения операции (в секундах)? В диапазоне 60 сек. вычисляется нормально, а если больше минуты, то уже выводит неправильно, т.к. расчитывает в 10-тичной системе.

4) Как вывести код ошибки, если таковая имеется? В принципе, обработать ошибку не-проблема.., в основном нужны описание часто/встречающихся кодов.
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 23.03.2015, 17:39   #2
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,774
По умолчанию

Цитата:
Сообщение от R71MT Посмотреть сообщение
1) Можно-ли вывести строку/слово, другим цветом, или цвет можно задавать только для активной страницы целиком?.
Видел это раньше в чужих батниках, сам никогда не пользовался. Сейчас почитал в справке и понял, что изменение цвета в виндовой консоли сделано через известное место. Команда color перекрывает умолчательный цвет символов/фона, типа как значение палитры, и при изменении оно меняется для экрана целиком. Шутники сидят в Microsoft.

Теоретически для установки цвета можно пользовать также ANSI-последовательности, но я не уверен насчет совместимости драйвера ANSI (ansi.sys) и консоли, поскольку изначально драйвер для совместимости с DOS создавался (а в DOS Esc-последовательности пришли с терминалов).

Цитата:
Сообщение от R71MT Посмотреть сообщение
2) Можно-ли вывести картинку в досовское окно? Так и не понял.. Где-то говорят, что нельзя, а кто-то предлагает сконвертировать в hex и выводить в кодированном виде.
В DOS-окно или в окно консоли? DOS-окно обеспечивается NTVDM, консоль -- консольное окно консольного приложения Win32. В консоль графику точно вывести нельзя, а в DOS можно в некоторых вырожденных случаях. Вполне вероятно, что на Windows 7 и старше эта возможность уже недоступна, ибо выпилена в драйверной модели WDDM.

Цитата:
Сообщение от R71MT Посмотреть сообщение
4) Как вывести код ошибки, если таковая имеется? В принципе, обработать ошибку не-проблема.., в основном нужны описание часто/встречающихся кодов.
А %errorlevel% не идет в переменную среды? Об этом можно и самостоятельно почитать и поэкспериментировать.
Vapaamies вне форума Ответить с цитированием
Старый 23.03.2015, 19:03   #3
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Спасибо! С цветами - я так и подозревал.., и мои эксперименты это подтвердили. Такой код не срабатывает. После паузы, красная строка окрашивается в обычный цвет:
Код:
color 0C
echo Красная строка
pause

color            ; восстанавливаем цвет по-умолчанию
echo Строка со-стандартным цветом
С errorlevel - тесты выявили такую закономерность:
Код:
@echo off
md testdir
echo %errorlevel%=0         ; успешно
rd testdir
echo %errorlevel%=0         ; успешно
тест
echo %errorlevel%=9009    ; недопустимая команда
md testdir
echo %errorlevel%=0         ; успешно
md testdir
echo %errorlevel%=1         ; каталог уже существует
rd testdir
echo %errorlevel%=1         ; успешно, но сохранился код предыдущей ошибки
set errorlevel=0
echo %errorlevel%=0         ; после явного сброса
rd con
echo %errorlevel%=1         ; недопустимое имя (rd - errorlevel никогда не меняет)
@goto :eof
..со-временем так и не разобрался, но пытаюсь написать функцию.
С графикой (жалко) облом, ..но нашёл такую альтернативу: ASCII Art Studio - переводит графику в символы.. Если шрифт по-мельче сделать (типа разрешение), то получается сносно..
Нашедшего выход - затаптывают первым..

Последний раз редактировалось R71MT; 23.03.2015 в 19:08.
R71MT вне форума Ответить с цитированием
Старый 23.03.2015, 19:07   #4
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Код:
 _------_,     _g/     -----------                            -               
MMM     ]#  _m0~`                     ,m*M"7%                         -       
' #&    #$_gMB,                  _g+"Zpp&p&Q#D#0ea,    -                      
ggg#&   4NY  ^#&_      -      _y0#0QDM8NNN0M0M0#NMSSm  r mr*pg y4c _gDm       
^"^^M&  ##     ^#6         _aNM#pNN0#MNMNK&MM&M&##&g3#$~^"  ~~3d*&~` ~`       
                         pMNN0MD00M0M#N##0M#0&0&BME0A#(z,  ,*~   !            
a=      "  '  +        p#MMMNBM#NN0K#0#N00#0M###M#QM,^#gE, &    g-            
  ,         = =  -    p0&MNRB0#0M@0M#0@M080W#@#&kM00D^ QF(\ ^**'              
    _   _    _  ,,   7WDM#K#B0MM"9TKMMHn-$KQ0R%D#8M#d3m 0E\                   
 {"    \- !  '' +"   MMB0851        ^^7I  Z5&~&Z&&DN#T~  ^ ^                  
           -        :wNF^             - -  ,^bwM"7 4$Q\                       
                    ^)0b)\                  \KK -:  E00                       
                    EXWEE^                  r "9     :~                       
                    -f4&&&% -   puxp: r-\   3 "D       8                      
                     m4000N4m   E#&M#N&L       &                              
                      ~M###T!     0WQ^ `       %I      ~                      
                        F{ ,%                  ^$         -                   
                       1g{ \                   1$       $                     
                   m   q4g~        1           wT5                            
                   .%    Mq~M~~\     -\   t    ~M%      -                     
                    h  -E\G#qmg%RNgnr"-~       &pG,       -                   
                    89 b{ ^"QKA009       \     4 bz        \                  
                    KQE 8Eu  WFF~         _g      _        Q       f          
                    #MJMM0w{  gQ      ,_mN0Nc  b ^8      \ 0  -               
                     X0mM9 .  4kmqjppMMMMZ: #Q ~-p-       4~  %  (~           
_, jc  gg            (0p-M0m  \M7MMM0QEE&00&m#K%T'       ^\%,^  m"QG          
MP_0Q*~~N*-          i@#zgQAmraw&&Bm0T }RtrmrKK;% - /:  EZ7Z p_j&  7Mm        
*"  4                ]N&&&##DA0g::d#MM  0MNF_2p ^'^'*S00$&bMA#B#$             
,  _F                 KSjBN ~&B0MgN##&_04&KWR###EE:   ~0%%rrNWT!`   ~         
"~~`                   -4F   ^MMM###0##NEZ^"G0\FFD7:Z=  ~d000                 
                      8M + ]( C* #0@^p&&9,     W~EEZ&r&   NO;Q  ,             
        --                      -~,g&#MDE0         -,+64-  M##&  ~            
                                ,QHgD###HM%`         b-NN, \gTh               
                              r&&r&8B0@WW&g 0          $$4, M&E,              
         -              ,   :4$$$.:^b!WMh@#ET: ^      \/%a0 FFF$              
                      r   "\%{~-" ^  5\QMQKmQO  \       "8:M0%&%              
                   p~  /w\" -~          *8@Qg0\         rFF#&ZrN              
                -/    p"                  4&0#0u         :~N#FFFT             
         -     a   :6r\              ^     ~RM00~          n$QFFq             
                              -             #WM$"  \        rM009             
                d\       --                  4@$MEn          ^^GM             
         - ~   ,% ^        --                 *M*r%: {-     - ^F%r            
aq      ,  :{  09                            ^ 'MG00{           w%3           
H4#     Q~ ]    r:                              R8mm:            "0%          
  D#    #qy&$   ^rmu                             9ZZ#@n{           Wf         
M##M#   RM` ##    ^1% *\,r,                      3MA8F~            {&+        
    #&  M   00r-    4&&&!:  t                    \R%g% %            10-       
/      -    ~N0Br           _r  -                 &RM&M%             x~-      
             "M&g                             mEE%rTMNN&OE)           w,      
              ~#h                            ~&:M~ f:#B&r:-1      3 w h",     
  c l =_    ,  4Mm                           \/   ^{00W#0^            - %     
               ~#$^                          S , rr2Q4b0~            \\"0     
                ##T                          ~ :$0QQE0~-r               9
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 23.03.2015, 19:14   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я думаю что ВАТ скриптами эти задачи (1 и 2) не реализуемы.
Обычно используют VBS и не парятся.

P.S. Картинку псевдографикой? Это несерьезно...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.03.2015, 19:27   #6
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Картинку псевдографикой? Это несерьезно...
..с картинкой ладно, ..это так - развлечения, а вот с цветами и VBS попробую. Спасибо...
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 23.03.2015, 19:38   #7
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,774
По умолчанию

Цитата:
Сообщение от R71MT Посмотреть сообщение
вот с цветами и VBS попробую. Спасибо...
Я погуглил за вас про esc-последовательности и нашел совет на StackOverflow использовать дополнительную прогу.
Vapaamies вне форума Ответить с цитированием
Старый 23.03.2015, 22:03   #8
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Цитата:
Сообщение от Vapaamies Посмотреть сообщение
использовать дополнительную прогу.
Почитал я отзывы о ней (ANSICON) - чёто не радуют. Кто-как отзываются, и (судя по-постам) иногда возникают глюки, в виде падения функциональных клавиш. Здесь есть хелп по установке и ссылка для скачивания.

Попробую порыться в VBS..
Нашедшего выход - затаптывают первым..

Последний раз редактировалось R71MT; 23.03.2015 в 22:09.
R71MT вне форума Ответить с цитированием
Старый 26.03.2015, 17:31   #9
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

..со-временем вроде разобрался.
Ниже - функция, которую можно вызывать с любого участка кода, через CALL с передачей ей параметров. Переменная будет хранить текущее время:

Код:
@echo off
chcp 1251
TITLE = Расчёт времени работы.
cls

call :sec tm1

echo.
echo  Ждём 5 сек...
ping -n 6 127.0.0.1>nul

call :sec tm2
set/a twork=%tm2%-%tm1%

echo  ============================================
echo  Время выполнения: %twork% сек.

echo.
echo  Ждём 10 сек...
ping -n 11 127.0.0.1>nul

call :sec tm3
set/a twork2=%tm3%-%tm2%
set/a all=%tm3%-%tm1%

echo  ============================================
echo  Время выполнения: %twork2% сек.

TITLE = Всего потрачено.. (%all% сек.)
goto :eof

rem формат времени без точек
:sec
set/a %1=3600*%time:~0,2%+60*1%time:~3,2%+1%time:~6,2%
goto :eof
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Учебник по bat файлам? Adamant Общие вопросы C/C++ 6 05.05.2014 19:40
Несколько вопросов Rost93 PHP 18 19.09.2012 19:38
Несколько вопросов. Miron86 Компоненты Delphi 3 09.09.2009 18:25
Несколько вопросов pix_l Общие вопросы Delphi 1 29.03.2009 22:26