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

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

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

    Цитата:
     
    К примеру, так:
    echo.|format U: /v:"" /x  

     
    не работает:
     
     
    D:\echo.|format H: /v:"" /x
    Тип файловой системы: NTFS.
    Введите метку тома для диска H: Указана недопустимая метка диска.
     
     
    mugil_cephalus
    походу да, нельзя в скрипте format использовать
     
    должны же быть альтернативы какие-нибудь?
     
     
     
    Добавлено:
    ADMINOVI4OK

    Цитата:
    3) дефрагментация.  

     
    все можно, кроме пункта 3
    виндовая дефрагментация из командной строки не запускается
    можно использовать для этого contig.exe от Руссиновича

    Всего записей: 463 | Зарегистр. 01-10-2003 | Отправлено: 16:05 11-03-2010
    Kirillhome



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    kermit
    Ну почему же у меня то работает????
     
    update:
    Кажется, я понял, в чем разница...
    Я проверял на USB-Flash, а надо, похоже, смотреть на USB-HDD - вероятно, есть разница обработки команды format в зависимости от типа данных устройств (о чём я сначала не догадался)

    Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 16:36 11-03-2010 | Исправлено: Kirillhome, 18:55 11-03-2010
    METAJIJI

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В общем алгоритм работы батника таков:
    1. считываем текстовый файл со списком путей до файлов
    folder\one\two\file.ext
    2. делаем некоторые операции с этим путем
    3. скачиваем wget'ом файл с сервера
    4. выполняем некоторые операции со скаченным файлом
    5. удаляем скаченный файл...
     
    Все бы ничего, но такая проблемка, в бат файле по ходу работы нужно использовать строку вида
    folder\one\two\file.ext
    это путь к файлу, но вот незадача, wget никак не хочет скачивать, и правильно делает, ведь "слеши неправельные"...
    как бы так налету переделать эту строку, чтобы получилось:
    folder/one/two/file.ext

    Всего записей: 27 | Зарегистр. 11-03-2010 | Отправлено: 18:39 11-03-2010 | Исправлено: METAJIJI, 18:45 11-03-2010
    mugil_cephalus

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

    Код:
    set "var=folder\one\two\file.ext"
    set "var=%var:\=/%"
    echo %var%


    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 19:24 11-03-2010
    pandomnik

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    так,с net use я разобрался.Теперь возникла проблема: можно ли как то подключить все имеющиеся сетевые ресурсы?если да,то каким образом? подскажите пожалуйста.
     
    всем спасибо)

    Всего записей: 4 | Зарегистр. 08-03-2010 | Отправлено: 20:48 11-03-2010
    mugil_cephalus

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

    Цитата:
    1) чистит папки (темп);  


    Код:
    chcp 1251
    for /f "tokens=*" %%a in ('dir /b/s/a-d "%temp%\*.*"') do del /q /a: "%%a"
    for /f "tokens=*" %%a in ('dir /b/ad "%temp%"') do rd /s /q "%%a"
    pause

     
    Добавлено:
    ADMINOVI4OK

    Цитата:
    2) проверка диска на наличие ошибок;  
    3) дефрагментация.

    Уильям Станек - Командная строка Microsoft Windows - http://rapidshare.com/files/89629093/Stanek_CLI_MS_Win.rar
     
    Добавлено:
    kermit

    Цитата:
    должны же быть альтернативы какие-нибудь?  

    спроси тут - http://forum.ru-board.com/forum.cgi?forum=84  

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 21:28 11-03-2010 | Исправлено: mugil_cephalus, 21:30 11-03-2010
    Kirillhome



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    pandomnik
    Ты же говоришь, что "разобрался"
     
    "Рассуждизмы"

    Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 21:44 11-03-2010
    claus22

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

    Всего записей: 118 | Зарегистр. 21-07-2004 | Отправлено: 22:42 11-03-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    claus22 с конца искать нельзя, но можно довольно быстро отрезать последние n срок командой tail (порт с юникса).

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 23:35 11-03-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    кто-нить желает протестить (на досуге делал себе чистилку Temporary Internet Files для всех юзеров и всех лок. дисков; щас сам ковыряю свой "труд" - смотрю что получилось)  

    Код:
    rem @echo off
    chcp 1251>nul
    taskkill /f /im iexplore.exe
    ping -n 21 localhost>nul 2>&1
    for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do call:_1 %%a
    pause
    goto:eof
     
    :_1
    for /f "tokens=*" %%B in ('dir /b/ad "%~1:\Documents and Settings"') do (
    echo.f|xcopy "%~1:\Documents and Settings\%%~B\Local Settings\Temporary Internet Files\Content.IE5\desktop.ini" "%~1:\Documents and Settings\%%~B\Local Settings\desktop.ini.%%~B" /h /-y
    for /f "tokens=*" %%i in ('dir /b/s/a-d "%~1:\Documents and Settings\%%~B\Local Settings\Temporary Internet Files\Content.IE5"') do (
    del /a: /q "%%~i" 1>>"%~dpn0_%~1_%%~B_del.log" 2>&1 &&if not exist "%%~i" 0>nul 1>>"%~dpn0_%~1_%%~B_remlst.txt" 2>&1 set /p="%%~i" &echo.>>"%~dpn0_%~1_%%~B_remlst.txt" 2>&1
    )
    echo.f|xcopy "%~1:\Documents and Settings\%%~B\Local Settings\desktop.ini.%%~B" "%~1:\Documents and Settings\%%~B\Local Settings\Temporary Internet Files\Content.IE5\desktop.ini" /h /-y
    rem check
    for /f "tokens=*" %%i in ('dir /b/s/a "%~1:\Documents and Settings\%%~B\Local Settings\Temporary Internet Files\Content.IE5"') do (
    0>nul 1>>"%~dpn0_%~1_%%~B_chklst.txt" 2>&1 set /p="%%~i" &echo.>>"%~dpn0_%~1_%%~B_chklst.txt" 2>&1
    )
    )
    goto:eof
     

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 00:30 12-03-2010
    pandomnik

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

    Всего записей: 4 | Зарегистр. 08-03-2010 | Отправлено: 00:45 12-03-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    А там что, засада с атрибутами в Temporary Internet Files? Есть примеры удаления всего в папке без удаления самой папки
     
    PushD c:\temp
    if not errorlevel 1 RD /s /q .
    PopD
     
    и удаления всех файлов в каталоге и подкаталогах.
     
    del /s /q /f *
    с атрибутами можно поигратся

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 09:07 12-03-2010
    Rush

    Уже за тридцать...
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    Файл desktop.ini нет нужды туда-сюда возить.  

    Код:
    do (  
    if /i not "%%~nxi"=="desktop.ini" del /a: /q "%%~i"

     

    Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 11:42 12-03-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Rush
    спасибо
    king_stiven
    почему то казалось, что index.dat с атрибутами h и s
    оказалось - нет:
    F:\Documents and Settings\admin\Local Settings\Temporary Internet Files\Content.IE5>attrib index.dat
    A          F:\Documents and Settings\admin\Local Settings\Temporary Internet Files\Content.IE5\index.dat

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 13:23 12-03-2010
    sergij

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    Снова к вам по поводу вывода в файл в строчку  
    Если в логах идёт строчка за строчкой  или через строчку то меняя

    Код:
     
    chcp 1251
    echo Имя     MAC Пользователь Процессор Чипсет Memory Bios Monitor XPpro >>out.txt
    setlocal enabledelayedexpansion
    -------------------------
    for /f "tokens=* %skp%" %%i in (009.txt) do (
    0>nul 1>>out.txt 2>&1 set /p="%%i    "
     
    if /i "_%skp%" equ "_" set "skp=0"
    set /a skp=!skp!+2
    set "skp=skip=!skp!"
    1>>out.txt 2>&1 echo.
    goto:loop
    )))))))))
     

    цифру шага можно всё устроить --- но в логах вывод происходит по разному с разным шагом  каждый лог отвечает за определ параметры компа - у одной машины он есть у другой его нет - т.е. в шапку текстовика надо поставить пустое значение  
    так вот если значение XPpro пустое  для данного компа - Bat-ник уходит в замкнутый цикл все данные идут вперемешку - может есть другой способ построения в строчку
    типа как dir /w  - Cпасибо

    Всего записей: 39 | Зарегистр. 14-03-2006 | Отправлено: 14:32 12-03-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sergij
    я делал, исходя из такой постановки задачи:
    001.log:  
    pc1  
    pc2  
    pc3  
    002.log:
    mac1
    mac2
    mac3
    поэтому блок счетчика

    Цитата:
    if /i "_%skp%" equ "_" set "skp=0"  
    set /a skp=!skp!+1  
    set "skp=skip=!skp!"  
    1>>out.txt 2>&1 echo.  
    goto:loop  

    был одинаковым для всех, а то что решение king_stiven

    Цитата:
    sergij  
    замени  
    set /a skp=!skp!+1 на  
    set /a skp=!skp!+2

    тебе помогло - это тебе повезло, это частный случай (была закономерность -
    Цитата:
    удвоение каждого  компа мака и юзера т.е
    )  если у тебя все логи так не совпадают, то действительно на выходе будет "каша". нужно тогда делать разбор для каждого лога по отдельности, - то есть для каждого свой "счетчик" и + свой анализатор. надо подумать.
     
     
    Добавлено:
    sergij
    у компа WS xx в 009.log пустое значение и нужно записать это пустое значение в out.txt (так детерминируется задача? )
     
    какова структура лога 009.log ?
    XPpro1
    XPpro2
    XPpro3
    пустая строка (то есть пробелы)
    XPpro5
     
    такая?
     
    или
    XPpro1
    XPpro2
    XPpro3
    XPpro5
    такая?

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 17:57 12-03-2010 | Исправлено: mugil_cephalus, 18:24 12-03-2010
    sergij

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Верхний Вариант только может итак быть
     
    XPPRO1
     
     
     
    XPPRO2
     
    XPPRO3
     
    А может быть и большее число пустых строк
     
     
     
    - изучаю книгу Станека хорошая вещь

    Всего записей: 39 | Зарегистр. 14-03-2006 | Отправлено: 19:37 12-03-2010 | Исправлено: sergij, 20:03 12-03-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sergij
    По умолчанию ключ /F выделяет из каждой строки файла
    первое слово, очищенное от окружающих его пробелов. Пустые строки
    в файле пропускаются.

    см. for /?
    цикл for не определяет пустые строки, тогда нужно для анализа вводить find /n
    если в 009.log нет приватной информации, выложи хотя бы его часть, чтоб посмотреть конкретно что там имеем (чтобы что-то придумать - нужно видеть) ; приватную инфу можно заретушировать типа бла бла ****** бла

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 20:24 12-03-2010
    sergij

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

    Всего записей: 39 | Зарегистр. 14-03-2006 | Отправлено: 20:50 12-03-2010 | Исправлено: sergij, 20:59 13-03-2010
    wolf0425



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

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

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 18:54 13-03-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