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

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



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

    Цитата:
    извиняюсь но с кодом еще не знаком так как вы все

    Весь код 10 строчек. Открываешь в редакторе, жмешь Ctrl+F вводишь tokens и жмешь Enter. Тебе подсвечивают единственную строчку, где это слово есть. Если быль очень внимательным, то можно сразу за этим tokens обнаружить и вожделенный delims. Ура, это то что нужно! Остается только исправить
    Код:
    for /f "tokens=1,2,3 delims=: "  
    на
    Код:
    for /f "tokens=1,2,4 delims=:. "

     
    vaddy3
    Немного не по теме вопрос. Попробуй пошерсти здесь.

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 19:20 15-05-2010 | Исправлено: Joo1z, 19:26 15-05-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mark_Titov
    Цитата:
    хотелось бы именно в отображении убрать exe...  
    do echo %%~na    %%b    %%c & set pr=!pr!,%%c  
    так что-ли? когда же ты хелп прочитаешь на for
     

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



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

    Цитата:
    Ура, это то что нужно!

    ...спасибо, не пинайте, я только учусь.
     
    Добавлено:
    ...а кто скажет почему не льзя указать ip в место имени компа в качестве переменной сервера?
     

    Код:
    set server=\\192.143.168.100
    tracert %server% >log.txt 2>>&1

    ...пишет -
    Unable to resolve target system name \\192.143.168.100
    ...хотя машина в сети и пингуется!

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 20:09 15-05-2010
    Svrale



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите пожалуйста со скриптом, есть файлы резервных копий (*.dmp *.stat *.log) и список backup.list в таком формате

    Код:
     
    20100507 bp_07-05-2010.*  
    20100508 bp_08-05-2010.*  
    20100509 bp_09-05-2010.*  
    20100510 bp_10-05-2010.*
    20100429 bp_29-04-2010.*  
    20100430 bp_30-04-2010.*  

     
    Надо копировать последний бекап ( файлы *.dmp *.stat *.log)  

    Код:
    ...
    for /F "Tokens=2" %%i in ('sort /r backup.list') do ( echo n|xcopy /F /Z /-Y %%i z:\backup\ && goto skip)
    :skip
    echo end of copy
    ...

    Проблема в том, что если в z:\backup\ уже есть файл bp_10-05-2010.* то копируется предыдущий файл bp_09-05-2010.* и так далее  
    Что сделать, что бы копировался только последний файл?
     
    Добавлено:
    Mark_Titov ip адрес не содержит "\\"

    Код:
    set server=192.143.168.100

    Всего записей: 250 | Зарегистр. 05-09-2009 | Отправлено: 21:14 15-05-2010 | Исправлено: Svrale, 21:16 15-05-2010
    wolf0425



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

    Цитата:
    ...а кто скажет почему не льзя указать ip в место имени компа в качестве переменной сервера?  
    почему нельзя - можно

    Цитата:
    ...хотя машина в сети и пингуется!  
    наверно же ты пингуешь без \\ в имени хоста, непонятно зачем в трейс \\ влепил
     
     
    Добавлено:
    Svrale
    Цитата:
    Что сделать, что бы копировался только последний файл?  

    надо сделать чтоб 1. всегда копировался последний файл или 2. чтоб когда последний файл уже скопирован - ничего не копировалось?
     
    1. do xcopy /F /Z /Y %%i z:\backup\ &  goto :skip  
    2. do echo n|xcopy /F /Z /-Y %%i z:\backup\ & goto :skip  

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 21:54 15-05-2010 | Исправлено: wolf0425, 22:03 15-05-2010
    Svrale



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    echo n|xcopy /F /Z /-Y %%i z:\backup\ & goto :skip  
    вот же вредная привычка - машинально поставил &&
    Спасибо.

    Всего записей: 250 | Зарегистр. 05-09-2009 | Отправлено: 22:14 15-05-2010
    Mark_Titov



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

    Цитата:
    ip адрес не содержит "\\"


    Цитата:
    наверно же ты пингуешь без \\ в имени хоста, непонятно зачем в трейс \\ влепил

     
    ...а, понял, спасибо, а я по привычке их ставлю.
     
    Еще вопрос-
    Есть tracert
     

    Код:
    @echo off
    mode con lines=50 cols=145
    set server=192.143.168.100
    tracert %server% >log.txt 2>>&1

    Результат -

    Код:
    Tracing route to 192.143.168.100 over a maximum of 30 hops
      1     1 ms    <1 ms    <1 ms  192.143.168.1                (CISCO)
      2     1 ms      1 ms       1 ms  192.143.168.10              (РОУТЕР)
      3    27 ms    35 ms    39 ms  192.143.168.100            (КЛИЕНТ)
    Trace complete.

    ...как сделать так что бы при потере пинга  например на 192.143.168.100 было так -
    3- "СВЯЗЬ ПОТЕРЯНА В ТОЧКЕ АБОНЕНТА"
     
    ...если на 192.143.168.10, то -
    2- "СВЯЗЬ ПОТЕРЯНА НА РОУТЕРЕ"
     
    ...если на 192.143.168.1, то -
    1- "СВЯЗЬ ПОТЕРЯНА НА CISCO"
     
    ...ну это образно, что бы сама задача ясна была.
    Можно конечно и весь лог писать, но это не нужно, уже сушествующий лог структуированный, и весь лог tracert только место будет занимать.
    Я хочу добавить в существующий лог эту результирующую строку...
     
    ...буду рад если кто поможет.
    Заранее  благодарю...

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 23:02 15-05-2010 | Исправлено: Mark_Titov, 23:04 15-05-2010
    mugil_cephalus

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

    Цитата:
    когда же ты хелп прочитаешь на for  

    а ты его запости здесь...

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 09:57 16-05-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    Цитата:
    а ты его запости здесь...
    думаешь  поможет?

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 10:26 16-05-2010
    mugil_cephalus

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

    Цитата:
    думаешь  поможет?  

    надежда умирает последней

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 11:02 16-05-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день! помогите пожалуйста решить следующую задачу:
     
    Допустим у меня есть ссылка
    http://s3.envato.com/files/329625/index.html
    При просмотре данной flash через Internet Explorer в папке Temporary Internet Files создаются файлы с путями например
    http://s3.envato.com/files/329625/index.html
    http://s3.envato.com/files/329625/preview.swf
    http://s3.envato.com/files/329625/css/book_styles.css
    и т.д
    Подскажите как сделать чтобы файлы, имеющие путь http://s3.envato.com/files/329625 копировались в определенную папку, например C:\ и имели следующие пути
    C:\329625\index.html
    C:\329625\preview.swf
    C:\329625\css\book_styles.css
    и т.д

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 19:33 16-05-2010
    digital422

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть задача под Win-следить за txt файлом и если он в течении 30 минут не изменился то очищать его содержимое и вбивать в него 3 пустых строки или переименовать его из лежащего рядом шаблона (пустой файл с 3-мя строками).

    Всего записей: 360 | Зарегистр. 19-04-2003 | Отправлено: 21:24 16-05-2010
    Joo1z



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

    Цитата:
    он в течении 30 минут не изменился

    Проверять каждые 10 секунд в течении получаса или раз в пол-часа?

    Цитата:
    очищать его содержимое

    тупо удалять,а на его месте создавать новый?
    А может тупо следить за изменением размера файла?

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 21:40 16-05-2010
    digital422

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

    Всего записей: 360 | Зарегистр. 19-04-2003 | Отправлено: 22:10 16-05-2010 | Исправлено: digital422, 22:11 16-05-2010
    mugil_cephalus

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

    Код:
    @echo off
    set "filename=G:\scripts\TEST\filename.txt"
    if /i "_%~1" equ "_szchk" goto:szchk
    if exist %SystemRoot%\tasks\szcomp.job (
    schtasks /delete /tn szcomp /f>nul
    ) else (
    schtasks /create /ru *** /rp *** /sc minute /mo 30 /tn szcomp /tr "G:\scripts\TEST\szcomp.bat szchk">nul
    )
    1>"%temp%\rnd.cnt" echo.0
    rem pause
    goto:eof
     
    :szchk
    set /p cnt=<"%temp%\rnd.cnt"
    set /a cnt+=1
    if /i "_%cnt%" neq "_2" (0>nul 1>"%temp%\rnd.cnt" set /p="%cnt%" &exit)
     
    for /f "tokens=*" %%i in ('dir /b/a-d %filename%') do (
    1>nul 2>&1 echo."%%~i"
    if /i "_%%~zi" equ "_3" (
    1>>%filename% (echo.&echo.&echo.)
    ))
    schtasks /delete /tn szcomp /f>nul
    set "filename="
    set "cnt="
    del /q /a: "%temp%\rnd.cnt">nul
    rem pause
    goto:eof

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 11:23 17-05-2010 | Исправлено: mugil_cephalus, 13:09 17-05-2010
    AnGo



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Hi,All!
    Возникла вот такая задача.
    Имеется несколько бат-файлов. Один бат-файл их объединяет.
    кусочек кода следующий:
     
    ...
    rem Создаем архивы
    call archiv_answer_for_ftn200.bat
    rem  
    echo.
    echo Копируем архив куда надо
    sort_files_adm_CO.exe.exe
    ....
     
    Проблема заключается в том, что архивы в батнике archiv_.... не успевают создаться до  того как прога sort_files... пытается их скопировать и естественно обламывается..
     
    Необходимо не выходит из батника archiv_... пока не создались архивы.
    В нем если просто написать:
     
    %PATH_TO_RAR% a -ep -ag %PATH_DEST%\log %PATH_SOURCE%\log*.txt
     
    то естественно, мы выходим из батника не дожидаясь завершения процесса, и в результате  - ошибка.
     
    Пробовал прописать:
     
    start /W %PATH_TO_RAR% a -ep -ag %PATH_DEST%\log %PATH_SOURCE%\log*.txt
     
    жалуется, что виндоуз не может найти файл "а", т.е. ключ принимает за файл.
    Как правильно написать этот кусок кода?
    Thx!
     
    PS.
    set "PATH_TO_RAR="C:\Program Files\WinRAR\winrar.exe""
    set "PATH_DEST=E:\AutomatUpdate\ftnAdmin200"
    set "PATH_SOURCE=E:\logist\baseDirForLogFiles"
     
     

    Всего записей: 1078 | Зарегистр. 07-07-2002 | Отправлено: 15:51 17-05-2010
    Joo1z



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AnGo
    Можешь tasklist'ом отслеживать наличие процесса winrar.exe и до тех пор пока он есть не выполнять дальнейших действий.

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 16:08 17-05-2010
    AnGo



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

    Цитата:
    Можешь tasklist'ом отслеживать наличие процесса winrar.exe и до тех пор пока он есть не выполнять дальнейших действий.

    Что-то сложновато получается.
    Имхо, должен быть путь проще...
     
     
    Добавлено:
    Joo1z

    Всего записей: 1078 | Зарегистр. 07-07-2002 | Отправлено: 17:27 17-05-2010
    Joo1z



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AnGo
    Должно быть проще.
    Я даже для проверки winrar поставил. У меня все нормуль: пока не заархивирует дальше не идет, что с call что без него.

    Всего записей: 123 | Зарегистр. 17-02-2009 | Отправлено: 17:44 17-05-2010 | Исправлено: Joo1z, 17:45 17-05-2010
    wolf0425



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

    Цитата:
    Пробовал прописать:
    start /W %PATH_TO_RAR% a -ep -ag %PATH_DEST%\log %PATH_SOURCE%\log*.txt
    жалуется, что виндоуз не может найти файл "а", т.е. ключ принимает за файл.  

    А чему равна переменная %PATH_TO_RAR% в этом твоем батнике?
    давай догадаюсь - в ней есть кавычки и start /? ты не читал? иди её просто забыл определить...
     
    start "" /W %PATH_TO_RAR% ...
     
    Добавлено:
    Joo1z

    Цитата:
    У меня все нормуль: пока не заархивирует дальше не идет, что с call что без него.

    аналогично. winrar 3.92

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 18:00 17-05-2010 | Исправлено: wolf0425, 18:13 17-05-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