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

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

Модерирует : KLASS, IFkO

vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

vu1tur



Moderator-Saaber
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Задачи на bat-файлах 8
(часть 1, часть 2, часть 3, часть 4, часть 5, часть 6, часть 7)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
 
Для перекодирования кирилицы 866<<>>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы

 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки
 
Полезные утилиты
 
Готовые решения и частые вопросы:
  • Встроенный справочник по командам
  • Создание помощи по всем командам консоли 2000 и XP
  • Делаем паузу в командном файле стандартными средствами Windows
  • Альтернативные решения »
  • Работа с текстом, датой, и файлами »
  • Администрирование, автоматизация и сеть »
  • Работа с переменными и параметрами ком. строки »
     
    Описания работы команд и символов участниками темы:
    · setlocal enabledelayedexpansion и переменные окружения
    · символы & и && в командной строке
    · Переменная %0

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 12:40 25-01-2010 | Исправлено: bomzzz, 13:37 20-08-2010
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mark_Titov
    На всякий случай, если аналогичные проблемы возникнут с датой:

    Код:
    set date=%date:~0,2%/%date:~3,2%/%date:~-2,2%

    Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 17:02 12-06-2010
    Mark_Titov



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ComradG
    ...Благодарю.

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 17:17 12-06-2010 | Исправлено: Mark_Titov, 21:32 12-06-2010
    WesternLight

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

    Цитата:
    Mark_Titov
    На всякий случай, если аналогичные проблемы возникнут с датой:
     
    Код:
    set date=%date:~0,2%/%date:~3,2%/%date:~-2,2%  

    ComradG, а результат зависит от региональных настроек? И что это такое :~0,2? Не видел в справке к командам, вообще не видел...
     
    Добавлено:

    Цитата:
    да намутил ты что-то лишнего.
    как-то так должно быть, проверяй:

    wolf0425, не работает:

    Цитата:
    @echo off
     
    chcp 1251>nul
     
    reg.exe query "HKCU\Console" /v FaceName|find "Lucida Console">nul || (
        1>nul reg.exe add "HKCU\Console" /v FontSize /t REG_DWORD /d 1048576 /f
        1>nul reg.exe add "HKCU\Console" /v FontFamily /t REG_DWORD /d 54 /f
        1>nul reg.exe add "HKCU\Console" /v FontWeight /t REG_DWORD /d 400 /f
        1>nul reg.exe add "HKCU\Console" /v FaceName /t REG_SZ /d "Lucida Console" /f
        start "" "%~f0" %*
        exit
    )
     
    :begin
    echo Кракозябрам нет!
     
    pause
    exit

    Всего записей: 61 | Зарегистр. 07-10-2007 | Отправлено: 21:51 12-06-2010
    wolf0425



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

    Цитата:
    И что это такое :~0,2?
    два символа переменной начиная со стартового (нулевого). :~-2,2 -  последние два символа переменной.  
    читай set /?
    ещё из приколов - можно подстроку на подстроку поменять перед тем значение переменной в строку вставится.

    Цитата:
    wolf0425, не работает:  
    ты от Mark_Titov ничего не подхватил?
    как именно не работает - предлагается у телепата узнавать?  
    окно перезапускает при непрописанной люсиде, люсиду прописывает?
    или запускает, но по прежнему с терминальным шрифтом, в том числе и при ручном повторном запуске?
    если второе - у тебя для батника уже есть сохраненные собственные настройки, где прописан терминал
     
    версия с удалением всех индивидуальных настроек консолей разных консольных программ, перед запуском подумать  - о смысле жизни, о бэкапе, о том надо ли это...

    Код:
    @echo off
     
    chcp 1251>nul
     
    reg.exe query "HKCU\Console" /s | findstr.exe /i /r FaceName.*Terminal && (
     for /f "delims=" %%a in ('reg.exe query "HKCU\Console" ^|findstr.exe /b /i /r HKEY_CURRENT_USER\\Console\\. ') do reg.exe delete %%a /f
     reg.exe add "HKCU\Console" /v FontSize /t REG_DWORD /d 1179648 /f
     reg.exe add "HKCU\Console" /v FontFamily /t REG_DWORD /d 54 /f
     reg.exe add "HKCU\Console" /v FontWeight /t REG_DWORD /d 400 /f
     reg.exe add "HKCU\Console" /v FaceName /t REG_SZ /d "Lucida Console" /f
     start "" "%~f0" %* & exit  
    )
     
     
    :begin
    echo Кракозябрам нет!
     
    pause
    exit  

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 23:07 12-06-2010 | Исправлено: wolf0425, 14:33 14-06-2010
    Mark_Titov



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ...Подскажите пож-ста что прописать в батнике что бы из него запускалось окно cmd с командой на просмотр всех сервисов на удаленной машине?
     
    Заранее благодарю...

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 00:13 13-06-2010 | Исправлено: Mark_Titov, 00:13 13-06-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    никто не подскажет красивого решения - надо удалить все подкаталоги в которых кроме file.txt ничего не лежит.
     
     
    Добавлено:

    Цитата:
    окно cmd с командой на просмотр всех сервисов на удаленной машине?  

    а что понимается под командой на просмотр всех сервисов на локальной машине?
    sc query  ??
    вроде для тебя же писали батник управления сервисами - там совершенно пофиг на какой машине сервисы
     

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 00:14 13-06-2010 | Исправлено: wolf0425, 00:18 13-06-2010
    Mark_Titov



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

    Цитата:
    там совершенно пофиг на какой машине сервисы

    ...Так нужно что бы поверх этого батника запускалось окно cmd и в нем все сервисы удаленной машины.

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 00:26 13-06-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    нафига тебе поверх одного окна со всеми сервисами удаленной машины - второе окно со всеми сервисами удаленной машины?
    что ты хочешь от окна cmd ???

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 00:29 13-06-2010 | Исправлено: wolf0425, 00:40 13-06-2010
    Mark_Titov



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

    Цитата:
    нафига тебе поверх одного окна со всеми сервисами удаленной машины - второе окно со всеми сервисами удаленной машины?

    ...Первое окно четко зафиксировано -
     
    mode con lines=50 cols=110
     
    ...и весь список сервисов и процессов моего сервака там не в мещается, потому как полосы прокрутки там нету.

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 00:39 13-06-2010
    wolf0425



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

    Цитата:
    весь список сервисов и процессов моего сервака там не в мещается, потому как полосы прокрутки там нету.
    так что, тебя ещё учить как размер окна настраивать и полосу прокрутки прикручивать?

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 00:53 13-06-2010
    Mark_Titov



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

    Цитата:
    так что, тебя ещё учить как размер окна настраивать и полосу прокрутки прикручивать?

    ))) на оборот она мне не нужна, (если бы она включалась ТОЛЬКО в нужном месте батника, не меняя выставленный размер окна, тогда было бы супер - но это не реально насколько я понимаю) я в качестве фишки хочу прикрутить это. Поможешь?

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 00:55 13-06-2010 | Исправлено: Mark_Titov, 01:05 13-06-2010
    WesternLight

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

    Цитата:
    как именно не работает - предлагается у телепата узнавать?  
    окно перезапускает при непрописанной люсиде, люсиду прописывает?
    или запускает, но по прежнему с терминальным шрифтом, в том числе и при ручном повторном запуске?  

    первый вариант вообще не перезапускает, сам запускается, отображает кракозябры и закрывается, люсиду не прописывает, тоже и при повторном запуске.
    второй вариант делает тоже самое, но еще и не закрывается сам.
    смущает меня эта команда, не хочет работать...

    Цитата:
    start "" "%~f0" %* & exit

     
     

    Цитата:
    если второе - у тебя для батника уже есть сохраненные собственные настройки, где прописан терминал

    я в шоке... у меня было не второе, но собственные настройки для cmd.exe были, я удалил подраздел %SystemRoot%_system32_cmd.exe, потом еще раз настроил cmd.exe на использование terminal, т.е. удаленный подраздел появился снова и вот тогда батник сработал! проделал еще раз тоже самое - работает, в чем же был прикол??

    Всего записей: 61 | Зарегистр. 07-10-2007 | Отправлено: 02:58 13-06-2010 | Исправлено: WesternLight, 03:08 13-06-2010
    wolf0425



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

    Цитата:
    смущает меня эта команда, не хочет работать...
    Цитата:
    start "" "%~f0" %* & exit  
    а чего смущает?
    запустить новую консоль с пустым заголовком, передав на исполнение полное имя текущего батника и все его параметры.  
    после чего выйти из текущего батника (новая копия - уже сама по себе)
    на XP замечательно работает, проверял...
     

    Цитата:
    проделал еще раз тоже самое - работает, в чем же был прикол??
    да кто теперь скажет что у тебя там было с настройками наворочено.
     
    Та версия батника что под красным шрифтом трет нафиг все индивидуальные установки консольных программ, если хоть одна из них имеет терминал дежурным фонтом. Жестко, зато кардинально и попутно вычищает всякие настройки длс программ, в которых пару лет назад настройки консоли правили. В принципе - одних праивльно сделанных дефолтовых настроек  - практически всем и должно хватать, кому не хватит - заново поправить не проблема....
     
     
     
     

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 05:43 13-06-2010
    ComradG



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

    Цитата:
    ComradG, а результат зависит от региональных настроек? И что это такое :~0,2? Не видел в справке к командам, вообще не видел...

    Перечитай внимательно справку, от региональных настроек данное выражение не зависит, так как является уникальным, раз, во-вторых,
    Цитата:
    ~0,2
    если ты не в курсе, то и не гни пальцы, дескать "я побольше твоего знаю". Похоже справку тут к cmd.exe никто не читал, если заверяют, что

    Цитата:
    хочется независимо - то надо разбирать wmic os get LocalDateTime

    А толку? Переменные time и date по-умолчанию в любой системе отображают данные в формате XX:XX:XX, так что использование конструкции

    Код:
    set time=%time:~0,2%:%time:~3,2%:%time:~-5,2%

    весьма оправдано. А если хотите повыпендриваться или просто облить гразью, для этого есть ПМ.

    Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 11:07 13-06-2010 | Исправлено: ComradG, 11:08 13-06-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    а это правильная арифметика???
    F:\>if "2" GTR "19" echo.hi
    hi
     
    Добавлено:
    obla4ko4240019

    Цитата:
    ага, практически то, только наоборот) нужно указывать те файлы, которые не будут удаляться. А в данном случае удаляются указанные файлы

    ты писал -
    Цитата:
    а как не удалять заданные номера или диапазон, т.е. oem1-oem20 например? а oem21-oem140 удалять?

    p.s.
    а что делать с oem0 ?

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 11:25 13-06-2010 | Исправлено: mugil_cephalus, 11:30 13-06-2010
    NIKZZZZ



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

    Цитата:
    set time=%time:~0,2%:%time:~3,2%:%time:~-5,2%  

    А насколько это корректно? Во время выполнения этой строки значение %Time% может измениться, что приведет к неправильному результату.
     
    mugil_cephalus

    Цитата:
    а это правильная арифметика???
    F:\>if "2" GTR "19" echo.hi
    hi  

     
    Правильная, сравниваются две строки (не числа), кавычки и говорят, что это строки.
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 12:01 13-06-2010
    yurkesha



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

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


    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2757 | Зарегистр. 15-12-2003 | Отправлено: 12:03 13-06-2010
    mugil_cephalus

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

    Цитата:
    Правильная, сравниваются две строки (не числа), кавычки и говорят, что это строки.

    спасибо - слишком невыразительно будет в этом случае, а то всю голову уже сломал  

    доизвращался до  
    F:\>if "02" GTR "19" (echo.hi) else echo.bye
    bye

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 12:21 13-06-2010
    king_stiven

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

    Цитата:
    никто не подскажет красивого решения - надо удалить все подкаталоги в которых кроме file.txt ничего не лежит.

    Что значит красиво? Если например каталогов и файлов немеряно, то так можно

    Код:
    for /f "delims=" %%e in ('dir file.txt /b /s') do (
        set "g=%%~dpe"
        call :up
    )
    goto :eof
    :up
    for /f "delims=" %%i in ('dir %g% /b') do if not "%%i"=="file.txt" goto io
    rd "%g%" /S /Q
    :io

     

    Код:
    for /f "delims=" %%e in ('dir file.txt /b /s') do call p "%%~dpe"
    goto :eof
    p
    for /f "delims=" %%i in ('dir %1 /b') do if not "%%i"=="file.txt" goto io
    rd %1 /S /Q
    :io

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 12:25 13-06-2010 | Исправлено: king_stiven, 12:42 13-06-2010
    Mark_Titov



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

    Цитата:
    ...Подскажите пож-ста что прописать в батнике что бы из него запускалось окно cmd с командой на просмотр всех сервисов на удаленной машине?

    ...Кто-нибудь поможет?
    Заранее спасибо...

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 12:27 13-06-2010
       

    Страницы: 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 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8
    vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru