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

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

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

    Код:
     
    for /F "tokens=* " %%i in (001.txt) do set pc=%%i
    for /F "tokens=* " %%i in (002.txt) do set mac=%%i
    for /F "tokens=* " %%i in (012.txt) do set ofe7=%%i
     
     
    echo Имя ком    MAC-адрес    Пользователь    Процессор     .......>>out.txt
    echo %pc%               %mac%                                ........           ........%ofe7%>>out.txt                                                
     

    Вот так из каждого текстовика инфа попадает в нужный столбик - но берется инфа только из последней (нижней) строчки каждого текстовика - а надо чтобы забрать все даные сверху вниз из каждого столбика каждого текстовика  -на выходе общий файл-который вставляется в Excel

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sergij может ты все же не будешь рисовать неработоспособный код для иллюстрации своего невнятного вопроса, а на те вопросы что я задал ответишь - приведешь по 3 строки из близких к реальности логов и те строки что нужно в итоге из этих трех получить?
    mugil_cephalus тебе уже выдал работающий код для склейки файлов с непустыми строками, что делать чтоб for не резал пустые строки - тебе вроде тоже сказали. в сумме это как-то так:

    Код:
    chcp 1251
    setlocal enabledelayedexpansion
    echo Имя комьютера      MAC-адрес    Пользователь          IP-Адрес           E-Mail >>out.txt
    :loop
    for /f "tokens=1* %skp% delims=:" %%i in ('findstr /n $ 001.log') do (
    0>nul 1>>out.txt 2>&1 set /p="%%j         "
    for /f "tokens=1* %skp% delims=:" %%i in ('findstr /n $ 002.log') do (
    0>nul 1>>out.txt 2>&1 set /p="%%j         "
    for /f "tokens=1* %skp% delims=:" %%i in ('findstr /n $ 003.log') do (
    0>nul 1>>out.txt 2>&1 set /p="%%j         "
    for /f "tokens=1* %skp% delims=:" %%i in ('findstr /n $ 004.log') do (
    0>nul 1>>out.txt 2>&1 set /p="%%j         "
    for /f "tokens=1* %skp% delims=:" %%i in ('findstr /n $ 005.log') do (
    0>nul 1>>out.txt 2>&1 set /p="%%j         "
    if /i "_%skp%" equ "_" set "skp=0"
    set /a skp=!skp!+1
    set "skp=skip=!skp!"
    1>>out.txt 2>&1 echo.
    goto:loop
    )))))  

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 01:06 14-03-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, пожалуйста, может ли батник работать с библиотеками (*.dll)?

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 14:34 14-03-2010
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lorents,
    Только с теми, которые могут быть вызваны с помощью rundll32
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 15:26 14-03-2010 | Исправлено: 01MDM, 15:27 14-03-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Понятно, меня интересует вот эта библиотека
    http://www.betterjpeg.com/downloads/bjpglib04.zip
    Будет ли работать батник через эту библиотеку?

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 16:36 14-03-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lorents
    если знаешь entrypoint и optional arguments то должен

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 17:14 14-03-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    а что это за параметры?

    Всего записей: 3299 | Зарегистр. 30-12-2007 | Отправлено: 17:27 14-03-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lorents
    http://support.microsoft.com/kb/164787
    примеры
    http://dx21.com/coding/libraries/rundll32/default.aspx
    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=2033&limit=1&m=1#1
    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=2034&limit=1&m=1#1
    http://www.robvanderwoude.com/rundll.php
    http://www.ericphelps.com/batch/rundll/  
    http://onestyle.com.ua  
    http://www.hackzone.ru/articles/view/id/958/

    Цитата:
    ***Rundll32 is a wonderful tool, especially for batch scripting.***  
     
    Format for using functions is :  
    rundll32 <dll>,<function> ,<arg1> ,<arg2> ...  
     

    http://forum.ru-board.com/topic.cgi?forum=5&topic=14880&start=1460#12
     
    http://develab.narod.ru/api/index0.htm

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



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите плз, как сделать автоматическую вставку из буфера обмена, при создании/открытии тхт документа???
    for /f "tokens=1,2,3,4,5,6,7 delims=:,. " %%a in ('echo ReadMe') do echo. > %%c%%b%%a%%d%%e%%f.txt&&start c:\progra~1\Notepad++\Notepad++.exe %%c%%b%%a%%d%%e%%f.txt  
    "встака из буфера??"

    Всего записей: 277 | Зарегистр. 22-06-2007 | Отправлено: 19:08 14-03-2010 | Исправлено: bdvrt, 19:08 14-03-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bdvrt
    http://forum.ru-board.com/topic.cgi?forum=5&topic=16142&start=0

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

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

    Имеются 33 очищенных текстовика - идут все они в основном через строчку -но в некоторых эта зависимость другая - но строки все чётные так вот представьте 33 листа с разной инфой -  вот их надо склеить по горизонту - извините если что не так

    Всего записей: 39 | Зарегистр. 14-03-2006 | Отправлено: 21:14 14-03-2010 | Исправлено: sergij, 00:13 15-03-2010
    bdvrt



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

    Цитата:
    bdvrt
    http://forum.ru-board.com/topic.cgi?forum=5&topic=16142&start=0

    Дык, мне надо в батнике какую-то команду прописать...

    Всего записей: 277 | Зарегистр. 22-06-2007 | Отправлено: 21:45 14-03-2010
    king_stiven

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

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 21:59 14-03-2010
    sergij

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

    Таки да - поэтому пошёл другим путём но вывод в файл  буду делать способом как вверху  - а вообще это обработка ini файлов от эвереста - просто много компов ...

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



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

    Цитата:
    Ваш код никак не сработал  - спасибо за ваше внимание конечно

    что интересно - у меня как-то работает.

    Цитата:
    -А вверху этой страницы специально для вас и был ответ на ваши все вопросы что - невнятного?  
    напрочь не вижу там ответа на
    Цитата:
    приведи пример двух кусков логов с пропусками и как их надо сложить  

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

    Цитата:
    таки без геморойчика не склеишь ты пустые строки, for потому что.
    да нет проблемы у for с пустыми сроками - таких просто нет в фор c findstr /n $ nnn.log
    проблема есть с 0>nul 1>>out.txt 2>&1 set /p="%%j        " : когда строка пустая - в файл не пишется ничего, в результате колонки едут (строки -  уже никуда не едут)
    думаем ещё раз - что делать с пустыми полями (если они вообще есть в непустых строках результата - в чем я уже не уверен)

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 22:41 14-03-2010 | Исправлено: wolf0425, 22:58 14-03-2010
    sergij

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

    Я извиняюсь перепроверил -Ваш код работает - первый раз  я что-то не так сделал
    и подумал что он уходит в бесконечный цикл - тем более что в ком строке он писал про ошибку а вот после вашего Убедительного ответа  я всё сделал тщательно и вот Вам СПАСИБО    но согласитесь и этот вывод в файл имеет право на существование

    Код:
     
    for /F "tokens=* " %%i in (001.txt) do set pc=%%i
    for /F "tokens=* " %%i in (002.txt) do set mac=%%i
    for /F "tokens=* " %%i in (003.txt) do set user=%%i
    echo %pc%      %mac%    %user%>>out.txt
     

    Просто на выход идёт последнее значение из каждого txt - а вот как организовать полный вывод я пока не знаю
    А Вам ещё раз ОГРОМНОЕ СПАСИБО !!!

    Всего записей: 39 | Зарегистр. 14-03-2006 | Отправлено: 00:09 15-03-2010 | Исправлено: sergij, 00:27 15-03-2010
    king_stiven

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

    Цитата:
    да нет проблемы у for с пустыми сроками - таких просто нет в фор c findstr /n $ nnn.log  

    запускаю батник

    Код:
    chcp 1251
    setlocal enabledelayedexpansion
    :loop
    for /f "tokens=1* %skp% delims=:" %%i in ('findstr /n $ 001.log') do (
    0>nul 1>>out.txt 2>&1 set /p="%%j         "
    for /f "tokens=1* %skp% delims=:" %%i in ('findstr /n $ 002.log') do (
    if /i "_%skp%" equ "_" set "skp=0"
    set /a skp=!skp!+1
    set "skp=skip=!skp!"
    1>>out.txt 2>&1 echo.
    goto:loop
    ))

     
    001.log

    Код:
    5678
     
    1234

     
    002.log

    Код:
     
    910
    1112

     
    out.txt

    Код:
    5678          
     
     

     
    а должно быть что то вроде

    Код:
    5678                  
                       910
    1234          1112

     
    поэтому фор не работает для пустых строк хоть с findstr /n $ 001.log. Есть у меня мысль как обойти это, но раз sergij всё устраивает...

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 09:55 15-03-2010
    mugil_cephalus

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

    Цитата:
    Дык, мне надо в батнике какую-то команду прописать...

    встроенной команды нет, есть консольные утилиты  
    http://www.petri.co.il/software/clip.zip
    или  
    ftp://ftp.microsoft.com/Services/TechNet/samples/PS/Win98/Reskit/FILE/CLIP.EXE

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
     
    Да нет меня далеко не всё устраивает ..... просто как вариант- да данный код  переводит на 1-позицию - нечётную встретившуюся строку - но пока других вариантов нет -поэтому и интерес ко всему что советуют люди которые в данном вопросе знатоки
    и Ваше решение мне тоже интересно

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

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

    Код:
    chcp 1251
    setlocal enabledelayedexpansion
    echo Имя комьютера      MAC-адрес    Пользователь          IP-Адрес           E-Mail >>out.txt
    :loop
    for /f "tokens=1* %skp% delims=:" %%i in ('findstr /n $ 001.log') do (
    0>nul 1>>out.txt 2>&1 set /p="%%j         "
    for /f "tokens=1* %skp% delims=:" %%i in ('findstr /n $ 002.log') do (
    0>nul 1>>out.txt 2>&1 set /p="%%j         "
    for /f "tokens=1* %skp% delims=:" %%i in ('findstr /n $ 003.log') do (
    0>nul 1>>out.txt 2>&1 set /p="%%j         "
    if /i "_%skp%" equ "_" set "skp=0"
    set /a skp=!skp!+1
    set "skp=skip=!skp!"
    1>>out.txt 2>&1 echo.
    goto:loop
    )))
    pause

     
    001.log
    pc1
    pc2
    pc3
     
    002.log
    mac1
     
    mac3
     
    003.log
    gen1
    gen2
    gen3
     
    out.txt
    Имя комьютера      MAC-адрес    Пользователь          IP-Адрес           E-Mail  
    pc1         mac1         gen1          
    pc2         gen2          
    pc3         mac3          
     
    sergij
    я уже писал:

    Цитата:
    тогда нужно для анализа вводить find /n

    но повторю за wolf0425'om

    Цитата:
    ответишь - приведешь по 3 строки из близких к реальности логов и те строки что нужно в итоге из этих трех получить?  
     


    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 10:47 15-03-2010 | Исправлено: mugil_cephalus, 11:07 15-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