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

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

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

vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Nagual



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

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

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

  • Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:28 19-03-2008 | Исправлено: Nagual, 01:02 24-09-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sevasmr1986
    такого не может быть
    так ты сам пишешь или все таки спрашиваешь как написать?
    делай так
    IF %ERRORLEVEL%==0 (GOTO :GOOD) ELSE GOTO:ERROR
     
    Добавлено:
    да, можно и без goto
     
    IF %ERRORLEVEL%==0 (
    rem "одна ветка дейсвий"  
    команды 1  
    ...)
    GOTO :GOOD
    ) ELSE (  
    rem "другая ветка действий"  
    команды 2  
    ...)

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 18:00 07-10-2008 | Исправлено: Nagual, 18:02 07-10-2008
    Elroir



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

    Цитата:
    такого не может быть

    Может, может :-)
    Ping в некоторых случаях (и на некоторых системах) всегда возвращает 0.
    Проверку в таких случаях надо делать так:

    Код:
     
    ping xxx.xxx.xxx.xxx | find /i "TTL=">nul
    if %errorlevel%==0 ....
     


    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:12 07-10-2008
    Shadowland

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    помогите плиз сделать батник чтобы когда размер определённой папки скажем c:/temp превышает 400 Мб из неё бы удалялись все файлы превышающие размером 1 Мб с опросом к примеру раз в час ...
     
    или чтоб просто удалять из папки все файлы превышающие размером 1 Мб
     
    заранее спасибо

    Всего записей: 451 | Зарегистр. 14-11-2005 | Отправлено: 20:01 07-10-2008 | Исправлено: Shadowland, 07:14 08-10-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Shadowland
    очень похоже на кеш IE
    почему бы не зайти в его настройки и не выставить там кеш, равный 1 Мб?
    можно также переопределить папку для хранения кеша

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 23:40 07-10-2008
    TatkaS

    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Помогите с написанием батника, плииз. Нужно закачать с ФТП последний свежий архив (с проверкой, есть ли он есть в наличии) с именем типа L_ggggmmdd.zip,  
    где gggg- год, mm-месяц, dd-день в определенную дирректорию и распаковать?  
    Не обязательно за текущий день - могут быть выходные, праздники.  Кроме того, в один день могут быть выложены два архива (за предыдущий и текущий дни).  

    Всего записей: 1 | Зарегистр. 08-10-2008 | Отправлено: 01:36 08-10-2008
    Shadowland

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    2Nagual
    возможно я неточно выразился
    "файлы превышающие размером 1 Мб" каждый, а не все вместе...
    т.е. требуется чтобы файлы в папке каждый из которых размером больше 1 Мб удалялись, а файлы в этойже папке каждый из которых  меньше 1 Мб оставались
    и речь не об IE

    Всего записей: 451 | Зарегистр. 14-11-2005 | Отправлено: 07:07 08-10-2008 | Исправлено: Shadowland, 07:20 08-10-2008
    DiZka



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Приветствую
    помогите написать bat-ник а то что то бьюсь бьюсь и не получается с этими циклами неважный из меня программист  
    В общем суть вот в чем:
    Есть директория F:\nod\mirror
    в директории есть sfx архив nod32.exe
     
    Задача при наличии в этой директории файла nod32.exe его удалить, написать echo Удаляем nod32.exe и выполнить архивирование ( "C:\program files\winrar\rar.exe" a nod32 F:\nod\mirror -ep1 -m0 -sfx -x*bat -x*.db ) и написать echo Архивируем
     
    Если nod32.exe нет в директории просто выполнить архивирование и написать echo Архивируем. И чтоб сообщение повисело секунд 5

    Всего записей: 374 | Зарегистр. 16-08-2005 | Отправлено: 09:47 08-10-2008 | Исправлено: DiZka, 09:48 08-10-2008
    SoAlDm

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

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

     
    А о каком сценарии идет речь? Где его посмотреть? Подскажите.
     
     
    Здравствуйте!
    Ещё раз обращаюсь с нижайшей просьбой помочь в решении проблемы о которой писал выше вот здесь:
    http://forum.ru-board.com/topic.cgi?forum=62&topic=13556&start=1700
     
    Вопрос заключается в том как проконтролировать  запущеный процесс? Если он "завис" тогда "убить" его принудительно и выполнить команду для его перезапуска.
    Смотрел команды tasklist и taskkill если бы знал как обработать %errorlevel% после их работы все можно было бы сделать. Но такое впечатление. что они этого не дают. Или можно? Или я ошибаюсь?

    Всего записей: 3 | Зарегистр. 07-10-2008 | Отправлено: 10:16 08-10-2008
    noiseless

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DiZka
    наверно, так:
     
    if exist nod32.exe (
    echo Удаляем nod32.exe
    del /Q nod32.exe
    )
    start "C:\program files\winrar\rar.exe a nod32 F:\nod\mirror -ep1 -m0 -sfx -x*bat -x*.db"
     
    по поводу паузы см. шапку

    Всего записей: 182 | Зарегистр. 06-02-2006 | Отправлено: 11:47 08-10-2008
    DiZka



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

    Всего записей: 374 | Зарегистр. 16-08-2005 | Отправлено: 12:17 08-10-2008
    INNO_SANCTUM

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ, помогите разобраться.  
    Задача несложная: переименовать все файлы в папке, вставив в начало перед именем текущее время в формате HH-MM-SS.
     
    Что пытаюсь сделать сначала, для одного файла:  
     

    Код:
     
    @echo off
            set aaa=%time%
            set a1=%time:~0,2%
            set a2=%time:~3,2%
            set a3=%time:~6,2%
     
            ren file.txt %a1%-%a2%-%a3%_file.txt
     

    Все работает.
     
    Для многих файлов:

    Код:
     
    @echo off
    for /f %%i in ('dir /b') do (
            set aaa=%time%
            set a1=%time:~0,2%
            set a2=%time:~3,2%
            set a3=%time:~6,2%
     
            ren "%%i" "%a1%-%a2%-%a3%_%%i"
    )
     
     

     
    Вроде как отрабатывает, но время - из прошлого примера, для всех файлов одинаковое!  
    Почему? Получается, что переменные в цикле for не модифицируются? Как обойти эту проблему?  
    ЗЫ запускать cmd с ключем /v:on пробовал, не помогло.  
     
    Спасибо всем.

    Всего записей: 18 | Зарегистр. 02-06-2008 | Отправлено: 14:46 08-10-2008
    swed

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

    Цитата:
    kak v cmd opredelit startup folder - dlya rus i eng versii windowsa (u menea tak : C:\Documents and Settings\Ruslan!\Start Menu\Programs\Startup = %userprofile%\Start Menu\Programs\Startup) a kak v ruskoi versii windows-a ? mojno kakato avto opredilenie zdelati ili drugie varianti ?!

     
    Иногда может помочь.

    Код:
     
    reg query "hkcu\software\microsoft\windows\currentversion\explorer\shell folders" /v Startup
     

    в переменную

    Код:
     
    for /f "tokens=2*" %i in ('reg query "hkcu\software\microsoft\windows\currentversion\explorer\shell folders" /v Startup ^|find /i "startup"') do @set "startfolder=%j"
    echo %startfolder%
     

     
    Добавлено:
    INNO_SANCTUM
    Используй ENABLEDELAYEDEXPANSION
     

    Код:
     
    SETLOCAL ENABLEDELAYEDEXPANSION
    @echo off  
    for /f %%i in ('dir /b') do (  
            set aaa=%time%  
            set a1=!aaa:~0,2!
            set a2=!aaa:~3,2!
            set a3=!aaa:~6,2!
             ren "%%i" "!a1!-!a2!-!a3!_%%i"  
    )
    endlocal
     

     
     
     
    Добавлено:
    SoAlDm
     

    Цитата:
    Вопрос заключается в том как проконтролировать  запущеный процесс? Если он "завис" тогда "убить" его принудительно и выполнить команду для его перезапуска.  
    Смотрел команды tasklist и taskkill если бы знал как обработать %errorlevel% после их работы все можно было бы сделать.

     
    может без errorlevel поможет?
     

    Код:
     
    (tasklist /fi "status eq NOT RESPONDING" | find /i "wmplayer.exe">nul ) && (taskkill /fi "imagename eq wmplayer.exe" & start "" wmplayer.exe)
     

     
    вместо wmplayer.exe поставь свой

    Всего записей: 171 | Зарегистр. 22-07-2004 | Отправлено: 15:00 08-10-2008 | Исправлено: swed, 15:05 08-10-2008
    king_stiven

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

    Код:
    @echo off
    for /f %%i in ('dir /b') do (
        set "file=%%i"
        call :ert
    )
    goto :eof
    :ert
    ren "%file%" "%time:~0,2%-%time:~3,2%-%time:~6,2%_%file%"

    Всего записей: 2167 | Зарегистр. 17-07-2006 | Отправлено: 16:40 08-10-2008
    dimpase

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ой!Здрасте еще раз!
    Скажите как при записи в файл строки перевести ее на новую строчку
    Допустим пример

    Код:
    set /p "input=  ўўҐ¤ЁвҐ ”€Ћ,-зҐаҐ§ § Їпвго!!! : "
    set a_in=%input%
    echo %a_in%>>FIO.txt
    pause

    После неоднакратного использования появляется постоянно одна строчка..ФЕНКС!!!
     
    Добавлено:
    ААА!!!
    ВСЕ!
    Ничего ненадо,
    ССОРРРРИИ
     
    Добавлено:
    Мужики!!!
    А как сделать чтобы  
    вот это:

    Код:
    @echo off  
    setlocal  
    set /p "input=  ўўҐ¤ЁвҐ ”€Ћ,-зҐаҐ§ § Їпвго!!! : "
    chcp 1251  
    set a_in=%input%
    echo %a_in%>>FIO.txt
     

    после окончания выдавало запрос,-хотите добавить еще запись?[Y]N:
    если пользователь вводит Y то код возвращается в начало ветки действий,если нет, то выполняется код батника дальше
    ???
    ПОМОГИТЕ ПЛИЗ ,СРОЧНО НАДО!!!

    Всего записей: 130 | Зарегистр. 29-09-2008 | Отправлено: 17:22 08-10-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Shadowland
    Код:
    @echo off&chcp 1251>nul
    set
    /a d=400*1024*1024
    :st
    for
    /f "tokens=2 delims=:" %%a in ('fsutil volume diskfree %systemdrive%') do set "f=%%a"
    :: set f=%f: =%
     
    if %f% lss %d% sleep 3600&goto:st
    set p="%systemdrive%\%username%"
    if exist %p% rd/s/q %p%
    md %p%
    robocopy %temp% %p%
    /create /min:1048576
    robocopy %p% %temp% /mov /max:1
    robocopy %temp% %p% /mov /max:1
    if exist %p% rd/s/q %p%
    sleep
    3600&goto:st

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 23:22 08-10-2008 | Исправлено: Nagual, 23:39 10-10-2008
    Shadowland

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    2Nagual
    большое спасибо
     
    пардон, я не силён в этом - можно пояснений к коду ? и куда пихать имя_папки ?

    Всего записей: 451 | Зарегистр. 14-11-2005 | Отправлено: 01:50 09-10-2008
    ruslanjuve

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

    Всего записей: 5 | Зарегистр. 06-10-2008 | Отправлено: 02:09 09-10-2008
    dimpase

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ну помогите а!Срочно надо!
    И как сделать чтобы символы <> выводились в текстовый файл,но без кавычек?
    Заранее спасибо.
     

    Цитата:
    Мужики!!!  
    А как сделать чтобы  
    вот это:  
     
    Код:@echo off  
    setlocal  
    set /p "input=  ўўҐ¤ЁвҐ ”€Ћ,-зҐаҐ§ § Їпвго!!! : "  
    chcp 1251  
    set a_in=%input%  
    echo %a_in%>>FIO.txt  
     
     
     
    после окончания выдавало запрос,-хотите добавить еще запись?[Y]N:  
    если пользователь вводит Y то код возвращается в начало ветки действий,если нет, то выполняется код батника дальше  
    ???  
    ПОМОГИТЕ ПЛИЗ ,СРОЧНО НАДО!!!


    Всего записей: 130 | Зарегистр. 29-09-2008 | Отправлено: 09:26 09-10-2008
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dimpase 09:26 09-10-2008
    Цитата:
    как сделать чтобы символы <> выводились в текстовый файл,но без кавычек


    Код:
    echo ^<^>

    и если перенаправить в файл:
    Код:
    echo ^<^>>file.txt

    Всего записей: 2704 | Зарегистр. 15-12-2003 | Отправлено: 10:26 09-10-2008 | Исправлено: yurkesha, 10:29 09-10-2008
    king_stiven

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

    Цитата:
    после окончания выдавало запрос,-хотите добавить еще запись?[Y]N:  

    Используй set /p
    Цитата:
    set /p "input1=continue?[Y]N


    Цитата:
    если пользователь вводит Y то код возвращается в начало ветки действий

    if /i "%input1%"=="y" goto begin
    смотри справку по goto, в начало цикла ставь метку :begin
    в начале цикла удаляй пременную set input1=
    для очистки экрана используй CLS

    Всего записей: 2167 | Зарегистр. 17-07-2006 | Отправлено: 10:39 09-10-2008
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 5
    vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru