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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ivn1978
    то есть имеется:
     
    Команда 1 [. ]  
    Команда 2 [  ]  
    Команда 3 [  ]  
    Команда 4 [  ]  
     
    нажимем клавишу "стрелка вниз", имеем на экране:
     
    Команда 1 [  ]  
    Команда 2 [. ]  
    Команда 3 [  ]  
    Команда 4 [  ]  
     
    ?

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 11:05 06-04-2010 | Исправлено: king_stiven, 11:06 06-04-2010
    METAJIJI

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

    Код:
     
    SET mainprompt=Нажатая_стрелка_вниз
     

    :) а дальше уже дело техники... я таких методов не знаю.

    Всего записей: 27 | Зарегистр. 11-03-2010 | Отправлено: 11:25 06-04-2010
    ivn1978



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

    Всего записей: 192 | Зарегистр. 25-01-2010 | Отправлено: 12:37 06-04-2010 | Исправлено: ivn1978, 17:22 19-04-2010
    wolf0425



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

    Цитата:
    Очень хочется видеть в консоли Lucida Console Но лишь на 1 сессию, чтобы настройки консоли которые были не сбились...
    а чем плохо иметь Lucida Console на все сессии?

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425:
    ну неудобно, ибо точечные шрифты используются в другом месте :) с Lucida Console конечно хорошо, но выглядит немного иначе... Как я понял кроме редактирования реестра путей решения больше нет?
     
    ivn1978:
    в принципе можно сделать проверку, равно ли введенное значение хотябы одному из значений.... если не равно, то выдать ошибку...

    Всего записей: 27 | Зарегистр. 11-03-2010 | Отправлено: 15:42 06-04-2010
    gryu



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

    Цитата:
    Очень хочется видеть в консоли Lucida Console Но лишь на 1 сессию, чтобы настройки консоли которые были не сбились...

    Есть следующее решение.
    Цитата:
    @echo off
    REG ADD HKCU\Console /v FaceName /t REG_SZ /d "Lucida Console" /f
    REG ADD HKCU\Console\%%SystemRoot%%_System32_cmd.exe /v FontSize /t REG_DWORD /d 000c0000 /f
    REG ADD HKCU\Console\%%SystemRoot%%_System32_cmd.exe /v FontFamily /t REG_DWORD /d 00000036 /f
    REG ADD HKCU\Console\%%SystemRoot%%_System32_cmd.exe /v FontWeight /t REG_DWORD /d 00000190 /f
    REG ADD HKCU\Console\%%SystemRoot%%_System32_cmd.exe /v FontSize /t REG_SZ /d "Lucida Console" /f  
    REG ADD HKCU\Console\%%SystemRoot%%_System32_cmd.exe /v HistoryNoDup /t REG_SZ /d 00000000 /f  
     

    Это включение Lucida Console в реестре.
    Так же можно вернуть потом назад.  
    Либо reg файлом.  
    Кстати при дефолтных настройках винды параметра HKCU\Console\%%SystemRoot%%_System32_cmd.exe не сушествует.
    Он появляется если настраивали консоль "под себя".  
    Т.е. по сути можно только так
    Цитата:
    REG ADD HKCU\Console /v FaceName /t REG_SZ /d "Lucida Console" /f  
    трала ла  
    REG ADD HKCU\Console /v FaceName /t REG_SZ /d "Terminal" /f  
    или
    Цитата:
     трала ла  
    REG ADD HKCU\Console /v FaceName /t REG_SZ /d "" /f
    REG delete HKCU\Console\%%SystemRoot%%_System32_cmd.exe /f
    что по дефолту.  
     
    Это прямое указание на шрифт в консоли.
    Цитата:
    Как я понял кроме редактирования реестра путей решения больше нет?  
    я тоже искал, не нашёл.  

    Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 16:00 06-04-2010 | Исправлено: gryu, 16:36 06-04-2010
    Maikl_relax

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет!  
    Подскажите, как пакетно удалить все файлы с именем file.txt из всех папок и подпапок  в "F:\NAME" кроме тех, что лежат в "F:\NAME\NODELETE"
    Либо адаптировать скриптик, котрый мне любезно подсказывали для поиска и удаления папок:
     
    for /f "delims=" %%a in (' dir /b/s/a:d "F:\NAME\*NEW_STRU" ') do (if "%%~nxa"=="NEW_STRU" (rd /S /Q "%%~fa"))  
     
    Для файлов трюк не прошел (у меня дурака ))  
     
    for /f "delims=" %%a in (' dir /b/s/a:d "F:\NAME\*" ') do (if "%%~nxa"=="file.txt" (del /F "%%~fa"\file.txt))  
     
    И как быть с "F:\NAME\NODELETE" - оттуда ведь удалит тоже, а не надо (((
    ?

    Всего записей: 8 | Зарегистр. 27-01-2010 | Отправлено: 16:04 06-04-2010 | Исправлено: Maikl_relax, 16:14 06-04-2010
    king_stiven

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

    Цитата:
    Т.е. операция должна проводится только над файлами с датой создания не старше 5 минут

     

    Код:
    @echo off
    echo WScript.Quit (DateDiff("n", CreateObject("Scripting.FileSystemObject").GetFile(WScript.Arguments.Item(0)).DateCreated, Now))>"%temp%\timediff.vbs"
     
    for %%a in (*.*) do (
    set "fgh=%%a"
    call :compare_crdate
    )
    del "%temp%\timediff.vbs"
    goto :eof
     
    :compare_crdate
    cscript //nologo "%temp%\timediff.vbs" "%fgh%"
    if %errorlevel% LEQ 5 echo %fgh% created 5 min

    вместо echo ставишь свою команду

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 17:28 06-04-2010
    gryu



    дикий гусь
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    спасибо. ещёб понять где эти 5 минут прописываются что бы их самому менять.
    Потому как мне не одну схожую задачу решить нужно. С разным временем.

    Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 17:50 06-04-2010
    king_stiven

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

    Цитата:
    if(если) %errorlevel%(время создания файла %fgh%) LEQ(меньше\равно) 5 echo %fgh% created 5 min

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 17:59 06-04-2010
    Dimau1981

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите плиз. На ***creator.elitecom.ru встретился такой батник, называемый там "шуточный".
     
    Set FromDir=%CD%
    Set SvcDir=%FromDir%
    Set TargetDir=%SvcDir%\Update
    MD %TargetDir%
     
    А в чем прикол-то? В песочнице запустил, так только создалась папка Update. Объясните плиз...

    Всего записей: 166 | Зарегистр. 29-12-2008 | Отправлено: 18:05 06-04-2010
    wolf0425



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

    Цитата:
    Как я понял кроме редактирования реестра путей решения больше нет?
    ещё ярлык заранее создать и запускать его...
     

    Цитата:
    с Lucida Console конечно хорошо, но выглядит немного иначе...
    замечательно выглядит - можно батники и в 866 и в 1251 гонять, всё рисуется без кракозябр.
    а что размеры и пропорции другие - так для текста это должно быть пофиг.
     

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 18:09 06-04-2010
    gryu



    дикий гусь
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    Спасибо. А если БОЛЬШЕ? (это про параметр LEQ)
     
    Dimau1981
    или он не полный или весь прикол в создании папки Update в той папке откуда запускается батник.
    MD %TargetDir%  
    где TargetDir - сложновыраженная переменная путь+имя папки.
    Set FromDir=%CD% - опредиление местанахождения и создание переменной на основе сиих данных.  
    Set SvcDir=%FromDir% - создание ещё одной переменной. (она уже есть)
    Set TargetDir=%SvcDir%\Update - подстановка этой переменной/пути под создание папки update
    MD %TargetDir%  - само создание....  
    ... или я тоже ничё не понял....  
    нахрена так сложно? через cd ?
    Всё тоже самое получаем командой
    md .\update
    или
    md update
     
    Добавлено:
    wolf0425

    Цитата:
    замечательно выглядит - можно батники и в 866 и в 1251 гонять, всё рисуется без кракозябр.  

    Это если запускается.  
    К сожалению нарвался на ряд грабель.  
    1. Если в пути есть символ "!" не сработает.  
    2. не понял почему, но на некоторых машинах консоль цтиклится на команде chcp с любыми параметрами.

    Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 18:12 06-04-2010 | Исправлено: gryu, 18:26 06-04-2010
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 18:18 06-04-2010
    gryu



    дикий гусь
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    йа дудак.  
    Спасибо.

    Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 18:23 06-04-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gryu
    Цитата:
    Это если запускается.  
    запускается/не запускается - от настройки фонта не зависит никак.

    Цитата:
    1. Если в пути есть символ "!" не сработает.  
    можно пример в студию? А то у меня всё замечательно срабатывает.

    Цитата:
    2. не понял почему, но на некоторых машинах консоль цтиклится на команде chcp с любыми параметрами.
    что есть циклится? что там говорит консоль, если chcp 437 набрать тупо вручную в окне cmd?
     
     
     

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 18:57 06-04-2010 | Исправлено: wolf0425, 19:00 06-04-2010
    anzibal

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

    Цитата:
    chcp 1251>nul  
    for /f "tokens=1-3* skip=5 delims= " %%a in ('dir /a-d/o-d/tc %systemroot%\Tasks') do set "var=%%~d" &&goto:exit  
    :exit  
    if /i "_%var:~-4%" equ "_.job" del /a: /q "%systemroot%\Tasks\%var%"  
    pause

     
    А тут без разницы получается сколько заданий в списке?
    Если установить 8 заданий, то удаляеться 7, 6, затем 8...
    Если 5 заданий, удаляет 3 задание.
    Как решить проблему?

    Всего записей: 9 | Зарегистр. 05-04-2010 | Отправлено: 20:12 06-04-2010 | Исправлено: anzibal, 20:26 06-04-2010
    ivn1978



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

    Всего записей: 192 | Зарегистр. 25-01-2010 | Отправлено: 21:14 06-04-2010 | Исправлено: ivn1978, 17:22 19-04-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    anzibal
    у меня вот этот код выдает в переменную предпоследнее задание по дате создания

    Цитата:
    chcp 1251>nul  
    for /f "tokens=1-4* skip=6 delims= " %%a in ('dir /a-d/o-d/tc %systemroot%\Tasks') do set "var=%%~e" &&goto:exit  
    :exit  
    pause  

    tokens - зависит от формата отображения времени и даты (у тебя - tokens=1-3* и set "var=%%~d" )
    skip - зависит от вывода команды - dir /a-d/o-d/tc %systemroot%\Tasks (у себя я skip подобрал вручную - ввел команду dir /a-d/o-d/tc %systemroot%\Tasks и посмотрел с каким skip'om выхожу на предпоследнее задание)  
    наверное, ты зря поменял skip с 6 на 5 (что пишет dir , если нет метки тома - не знаю)
    у меня так:
    F:\>dir /a-d/o-d/tc %systemroot%\Tasks
     Том в устройстве F имеет метку win1
     Серийный номер тома: BE1C-92F1
     
     Содержимое папки F:\WINDOWS\Tasks
     
    введи в консоли dir /a-d/o-d/tc %systemroot%\Tasks - посмотри какое задание второе сверху (это - предпоследнее)  и подбери skip=x , чтобы код выдавал в переменную это задание

    Цитата:
    А тут без разницы получается сколько заданий в списке?

    хоть 1000 заданий; код находит предпоследнее, присваивает его переменной %var% , выходит из цикла for и далее можешь делать что хочешь с этой переменной - удалять или, например, показывать - if /i "_%var:~-4%" equ "_.job" echo.%var%

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 22:32 06-04-2010 | Исправлено: mugil_cephalus, 22:44 06-04-2010
    gryu



    дикий гусь
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Цитата:
    можно пример в студию? А то у меня всё замечательно срабатывает.  

    Цитата:
    что есть циклится? что там говорит консоль, если chcp 437 набрать тупо вручную в окне cmd?  

    Я так и не разобрался в чём дело. Где ошибка.  
     
    Вот сам батник
    Цитата:
    rem @echo off
    chcp 1251
    set A=Ау!  
    rem chcp 866  
    echo %A%  

     
    Добавлено:

    Цитата:
    что там говорит консоль, если chcp 437 набрать тупо вручную в окне cmd?  
    работает. Почему то именно в составе bat|cmd файе не работает.  

    Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 22:48 06-04-2010 | Исправлено: gryu, 22:49 06-04-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