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

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

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

vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:54 27-04-2007 | Исправлено: Elroir, 03:59 10-09-2007
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    krukoff
    Цитата:
    Где я "напортачил" ?

    вот так @If "%%~xi"=="*.tmp *.tm" работать не будет,
    и чем думать как без глюков вписать проверку на подстроку - проще ещё цикл надстроить.
     
    тебе по списку расширений пройтись надо? вот так сойдет? (пути поменяй по вкусу)

    Код:
    @echo off
    chcp 1251 > nul
    setlocal enabledelayedexpansion
     
    Set LogPath=.\Log.txt
    Set DelPath=.
    CD "%DelPath%"
     
    for /f "tokens=1*" %%a in (%~s0) do if "%%a"=="#" For /R %%i In (*%%b) Do if /i "%%~xi"=="%%b" del "%%i" & if Not Exist "%%i" (Echo %Time:~0,-3%^>^> File "%%i" was deleted>> "%LogPath%") Else (Echo %Time:~0,-3%^>^> File "%%i" was NOT deleted>> "%LogPath%")
     
    goto :eof
     
    ####    list of extension. No wildcards & spaces !
    #    .tmp
    #    .tmp2
    #    .tm
     

     

    Цитата:
    P.S.  Спраздником вас!

    спасибо

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 16:46 07-05-2007
    igor_andreev

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

    Цитата:
    продолжать куда? напроавление то ты дал совершенно тупиковое

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

    for /f "tokens=*" %%a in ('dir /s /b *.tmp ^| findstr /i /e ".tmp"') do del /f /q "%%a"

     
    Соображалку также можно заюзать и дальше, на предмет логирования и вставки времени, хотя это имхо явно лишнее, какая разница, удален файл в 21:22:45 или в 21:35:07 ? С трудом представляю себе админа или директора, внимательно читающего мегабайтный лог и устраивающего истерику по поводу того, что файл удален в 21:25, а не в 21:26 Достаточно вставить в начале батника:
    echo %time% start task>log
    а в конце соответственно stop task

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 17:49 07-05-2007
    Maza Faka



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

    Цитата:
    for /f "tokens=1*" %%a in (%~s0) do

    А зачем нужно разбирать построчно текст батника?

    Цитата:
    For /R %%i In (*%%b) Do if /i "%%~xi"=="%%b" del "%%i"

    И здесь не понятно, откуда взялась переменная %%b?
     
    Добавлено:
    igor_andreev

    Цитата:
    or /f "tokens=*" %%a in ('dir /s /b *.tmp ^| findstr /i /e ".tmp"') do del /f /q "%%a"

    отличное решение!

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 18:36 07-05-2007
    11100

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    одна программа запускается при старте системы,мне необходимо ,что б при запуски определенной программы первая(та ,что запускается при старте)закрывалась.можно ли это автоматизировать.

    Всего записей: 81 | Зарегистр. 02-04-2007 | Отправлено: 22:48 07-05-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    11100
    Можно. Делаешь такой батник:

    Код:
     
    taskkill /f /im program1.exe
    program2.exe
     

    Работает для WinXP Pro и выше.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:52 07-05-2007
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть такая задача - UsbFlashDisk (известна буква,например z:), нужно изменить политики
     
    Свойства->оборудование->нужное устройство->свойства->политики:
    Oптимизиpoвaть для быcтpoгo удaлeния ->Oптимизиpoвaть для выпoлнeния ->Ok
     
    Решаема ли задача батником?
    Тупое изменение ключей реестра эфекта не дает.
     
    P.S. я не вставлял смайлик !!!

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 04:11 08-05-2007 | Исправлено: NIKZZZZ, 04:38 08-05-2007
    Elroir



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

    Цитата:
    я не вставлял смайлик !!!

    Нажми "Редактировать" и убери галочку с "Разрешить смайлики?".

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 04:16 08-05-2007
    Gabzya



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    млин, какой то батник неправильный все же, уже неделю работает, но 0 результата....
     
    Добавлено:
    @echo off
    setlocal enabledelayedexpansion
    chcp 1251 > nul
     
    set first_symb=і
    set second_symb=ї
    set third_symb=І
    set forth_symb=Ї
     
    :rendir
    for /f "tokens=*" %%a in ('dir /b /a:d /s') do (
       set dirname=%%a
       set dirname=!dirname:%first_symb%=1!
       set dirname=!dirname:%second_symb%=2!
       set dirname=!dirname:%third_symb%=3!
       set dirname=!dirname:%forth_symb%=4!
       move "%%a" "!dirname!" 2>nul | find /i "перемещено" && goto rendir
    )
     
    :renfiles
    for /f "tokens=*" %%a in ('dir /b /a:-d /s') do (
       set filename=%%~nxa
       set filename=!filename:%first_symb%=1!
       set filename=!filename:%second_symb%=2!
       set filename=!filename:%third_symb%=3!
       set filename=!filename:%forth_symb%=4!
       ren "%%a" "!filename!"
    )

    Всего записей: 1149 | Зарегистр. 14-12-2004 | Отправлено: 09:00 08-05-2007
    wolf0425



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

    Цитата:
    А зачем нужно разбирать построчно текст батника?  

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

    Цитата:
    И здесь не понятно, откуда взялась переменная %%b?  

    очевидно же - предыдущий цикл  for /f "tokens=1*" %%a  
    определяет две переменные - %%a и %%b
     

    Цитата:
    отличное решение!

    угу, красивое. вот только ничуть не быстрее и для списка расширений всё равно городить ещё цикл.
    и пофайловое выпендрежное логирование (не)успешных удалений у krukoff займет в батнике больше места, чем собственно удаление/проверка...

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 10:14 08-05-2007 | Исправлено: wolf0425, 10:27 08-05-2007
    Maza Faka



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

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

     Я так и подумал вначале, но меня смутили символы # решил, что батник споткнётся на них, а так решение ничего, оригинальное!

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 10:35 08-05-2007
    wolf0425



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

    Цитата:
    уже неделю работает, но 0 результата....  

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

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 13:21 08-05-2007
    Maza Faka



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

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

    Ему надо заменить украинские символы  "i" и "ї"на "и" и "йы", мы с Tipulatoid-ом помогли ему написать батник, а он у него не работает ни в каких кодировках, правда насчёт недели я тоже не понял...

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 14:13 08-05-2007
    wolf0425



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

    Цитата:
    мы с Tipulatoid-ом помогли ему написать батник

    да вижу я и этот батник - он же его и процитировал, и историю вопроса помню.
    батник вроде вполне рабочий (на моем компе) - вот мне и интересно: в чем же до сих пор затык...
     
    ps: а батник - кривой до невозможности, на каждую неправильную буковку в имени каталога делает его переименование и полное пересканирование всего дерева - что и действительно при запуске на c:\ фиг знает сколько времени займёт...  
    но неделя - как-то всё равно черезчур
     
    разве что - какой-то "неправильный" каталог залочен и не дает себя переименовать...

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 14:34 08-05-2007 | Исправлено: wolf0425, 14:59 08-05-2007
    Elroir



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

    Цитата:
    а батник - кривой до невозможности

    Предложи свой вариант

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 14:59 08-05-2007
    wolf0425



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

    Цитата:
    Предложи свой вариант  

    в процесе написания. больше всего мне мешают идейные непонятки
    1. нафига оно мне вообще надо
    2. а всё-таки - в какие буквы надо переименовывать "і" и "ї"

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 15:02 08-05-2007
    Elroir



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

    Цитата:
    1. нафига оно мне вообще надо  

    Для интереса . Ну и показать как правильно - чтобы другие научились.

    Цитата:
    2. а всё-таки - в какие буквы надо переименовывать "і" и "ї"

    Это к Gabzya
    А... вот:

    Цитата:
    Ему надо заменить украинские символы  "i" и "ї"на "и" и "йы"


    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:07 08-05-2007 | Исправлено: Elroir, 15:08 08-05-2007
    wolf0425



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

    Цитата:
    Ему надо заменить украинские символы  "i" и "ї"на "и" и "йы"

    "йы" - так буквально и пишется? А в верхнем регистре?

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 15:34 08-05-2007
    Elroir



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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:40 08-05-2007
    slayer120



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Стоит задача - копировать с разных компов файлы бакапов (.bkf)
     на один сервак. Надо, естественно выбирать последние по дате.
      В связи с этим вопросы:
     1. Надо ли мапить сетевые диски ,т.е. будет ли for обрабатывать bnc пути?  
     2. Дописать в имя копируемого файла время.  
     3. Собственно как работать с временем создания файлов(можно сравнивать и т.п.)?
       
    ps  
    wolf0425

    Цитата:
    да в общем-то одного DT на все форматы образов как раз и хватает

      А  например vcd образы он читает разве?

    Всего записей: 303 | Зарегистр. 24-01-2007 | Отправлено: 17:03 08-05-2007 | Исправлено: slayer120, 17:06 08-05-2007
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    slayer120
    1. с bnc путями замечательно работает dir, вот её в for /f и вписать - заодно отсортирует
    2. переменная %time% тебе зачем дана?  
    или ты про время файлов - тогда см @for /r %a in (*.cmd) do @echo %~nxa - %~ta
    3. а оно тебе надо - самому время/дату сравнивать? попросить dir отсортировать и взять nn первых - недостаточно?

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 17:15 08-05-2007 | Исправлено: wolf0425, 17:17 08-05-2007
       

    Страницы: 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-файлах 3
    vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru