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

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    имеется папка HISTORY в которой много ПАПОК (*) имеющие файлы
     
    нужно убить рекурсивно все папки которые старше 10 дней

    Всего записей: 800 | Зарегистр. 10-11-2006 | Отправлено: 12:30 10-06-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mouser имена папок произвольные, количество папок на день неизвестно?
    тогда смотри шапку темы, там есть пример как ветвиться по разнице в дате с привлечением vbs.
     

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 12:46 10-06-2010 | Исправлено: wolf0425, 12:47 10-06-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mark_Titov
    Ты прикалываешься?

    Код:
    set "%mes_log%"="path_to_file"
    IF EXIST %mes_log% goto :ein
    goto :zwei

    А вообще- пообщайся попробуй так на ixbt- там очень быыыыстро помогут научиться...

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    us0r
    Цитата:
    Ты прикалываешься?  
    он не прикалывается - он ленится, думать и учиться не хочет,  хочет чтоб за него всё писали.

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 12:48 10-06-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Мдееее... Нет, я бы понял, если бы у человека физически нехватало времени...
    Mark_Titov
    Ты одмином на оффисе работаешь?

    Всего записей: 407 | Зарегистр. 06-12-2007 | Отправлено: 13:00 10-06-2010
    BagaBaga

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Возможно ли на bat-файлах создать "недо-cron", который работал бы по следующей схеме (последовательного "запускальщика задач"):
     
    1. есть некоторая директория, которую он мониторит
    2. если директория пуста (нет файлов), он ничего не делает, просто начнет опрос еще раз "несколько погодя", допустим, через минуту
    3. если в директории есть файлы, берет любой (с некоторым именем, допустим, job1) и запускает его на выполнение (пусть запуском будет call c:\job1.bat). (Файл-метку перед запуском удаляет) Этот job1 может завершиться нормально, либо с сообщением об ошибке, например math overflow. Любое завершение job1 не должно прекратирь работу планировщика. По прекращении работы (успешной или по ошибке) задания планировщик должен взять следующую метку на обработку. Если метки нет, то п.2.

    Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 13:01 10-06-2010
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Не зря меня били ногами! От идеи создания ярлыка я отказался - в любом случае вызывается wscript.exe, т.е. тему действительно можно закрывать

    Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 13:01 10-06-2010
    sarti



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

    Всего записей: 1972 | Зарегистр. 04-08-2006 | Отправлено: 13:11 10-06-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sarti
    Проверь через SC QUERY
    (Тут только идея- код подлежит проверке)

    Код:
    set /p servicename=
    SC QUERY %servicename% | SET /P STAT= && IF /I "%STAT%"=="RUNNING" GOTO :EOF
    SC START %servicename%

    Как- то так...

    Всего записей: 407 | Зарегистр. 06-12-2007 | Отправлено: 13:14 10-06-2010 | Исправлено: us0r, 13:15 10-06-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    BagaBaga
    Ну дык и делай как написал, только для запуска батников использую start или просто вызывай c:\job1.bat, чтоб в другом окне запускались и не влияли на родителя.
    Как сделать паузу в итерациях здесь не однократно писалось, например пингом.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 13:17 10-06-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BagaBaga
    Большой недокрон:

    Код:
    setlocal
    REM markfile можно оставить без расширения
    REM markfile должен содержать имя запускаемого батнега
    set /p workdir="Рабочая директория: "
    :timer
    ping -l 1 -n 6000 127.0.0.1 > nul
    IF EXIST markfile goto :run
    goto :timer
    :run
    findstr /c:batname markfile | start "" /wait %тут вроде бы должна быть строка переданная по конвееру%
    del /q /f markfile
    goto :timer
    endlocal

    Всего записей: 407 | Зарегистр. 06-12-2007 | Отправлено: 13:27 10-06-2010 | Исправлено: us0r, 13:28 10-06-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BagaBaga, по моему ты что-то такое хочешь:

    Код:
    :timer
    for %%a in (c:\scandir\*) do del "%%~fa" & start "" "c:\cmd_dir\%%~na.cmd"
    ping -n 6001 127.0.0.1 > nul
    goto :timer

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

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 13:47 10-06-2010 | Исправлено: wolf0425, 13:50 10-06-2010
    BagaBaga

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    пинг используем в качестве таймера задержки?

    Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 15:03 10-06-2010
    mugil_cephalus

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

    Цитата:
    Не зря меня били ногами!  

    да никто тебя не бил то уж... любопытство "спать не давало"

    Цитата:
    От идеи создания ярлыка я отказался - в любом случае вызывается wscript.exe,

    я так и думал, сам идею ( с твоей подачи) крутил и так и эдак, все равно без интерпретатора c/w-script не обойтись  
    Es ist das Leben dies.

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    So-so, la-la! Hatte ich sange du bist so lange! Doch ich kein, noch weinen.
    Так что надо в шапке красными буквами написать:
    СОЗДАНИЕ ЯРЛЫКА ЧЕРЕЗ ШТАТНЫЙ CMD.EXE НЕВОЗМОЖНО!!!
    Ну, чтоб не пытались изобретать велосипед, как я... Еще раз прошу прощения, за свое упрямство и если кого обидел.

    Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 15:33 10-06-2010
    mugil_cephalus

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

    Код:
    for /f "tokens=1-3 delims=+ " %%a in ('wmic os get LocalDateTime ^|more +1') do set "pid=%%~a%%~b%%~c" &start "" cmd /k "title yourtitle_%%~a%%~b%%~c_ &pause &exit"

    этот батник и все его копии будут всегда уникальными и без pid

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 15:45 10-06-2010
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кстати
    mugil_cephalus
    по поводу ругани в адрес findsrt это ты зря (я про прошлый пост)
    попробуй сделать так:

    Код:
    @echo off
    reg add HKCU\Software\MyTestKey | findstr /i done
    reg delete HKCU\Software\MyTestKey /f /va | findstr /i done
    exit /b

    и ты увидешь, что зря ругался в мой адрес. Да! и ткни наконец меня в счетчики, благодоря которым ты вывел, что все мной написаное на все 100% нерабочее.

    Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 15:56 10-06-2010
    mugil_cephalus

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

    Цитата:
    Ну, чтоб не пытались изобретать велосипед, как я...  

    а про - "пер аспера ад астра" и "суха теория, мой друг, а древо жизни вечно зеленеет..." - забыл?..
     
    Добавлено:
    ComradG

    Цитата:
    Кстати  
    mugil_cephalus  
    по поводу ругани в адрес findsrt это ты зря (я про прошлый пост)  
    попробуй сделать так:  

    у тебя зоологическая/ихтиологическая аберрация - http://forum.ru-board.com/topic.cgi?forum=62&topic=19668&start=1740#19

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 15:56 10-06-2010 | Исправлено: mugil_cephalus, 16:12 10-06-2010
    ComradG



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

    Цитата:
    "суха теория, мой друг, а древо жизни вечно зеленеет..."

    Возможно. Но мне хочется использовать потенциал cmd.exe не на 100%, а на 200%.
     
    Добавлено:

    Цитата:
    у тебя зоологическая аберрация

    Нет, уменя всего лишь раковая опухоль (но как видишь еще жив благодаря немецким врачам). И все же я буду настаивать на своем касательно findsrt - это фокус иногда действительно срабатывает, когда не работает 2>nul или 1>nul.

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

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

    Цитата:
    Нет, уменя всего лишь раковая опухоль (но как видишь еще жив благодаря немецким врачам). И все же я буду настаивать на своем касательно findsrt - это фокус иногда действительно срабатывает, когда не работает 2>nul или 1>nul.

    да это ж был не мой пост (я тебе ссылку привел)

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 16:08 10-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