Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 8

Автор: Rush
Дата сообщения: 12.03.2010 10:42
mugil_cephalus
Файл desktop.ini нет нужды туда-сюда возить.

Код: do (
if /i not "%%~nxi"=="desktop.ini" del /a: /q "%%~i"
Автор: mugil_cephalus
Дата сообщения: 12.03.2010 12:23
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
Автор: sergij
Дата сообщения: 12.03.2010 13:32
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
)))))))))
Автор: mugil_cephalus
Дата сообщения: 12.03.2010 16:57
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
такая?
Автор: sergij
Дата сообщения: 12.03.2010 18:37
Верхний Вариант только может итак быть

XPPRO1



XPPRO2

XPPRO3

А может быть и большее число пустых строк



- изучаю книгу Станека хорошая вещь
Автор: mugil_cephalus
Дата сообщения: 12.03.2010 19:24
sergij
По умолчанию ключ /F выделяет из каждой строки файла
первое слово, очищенное от окружающих его пробелов. Пустые строки
в файле пропускаются.

см. for /?
цикл for не определяет пустые строки, тогда нужно для анализа вводить find /n
если в 009.log нет приватной информации, выложи хотя бы его часть, чтоб посмотреть конкретно что там имеем (чтобы что-то придумать - нужно видеть) ; приватную инфу можно заретушировать типа бла бла ****** бла
Автор: sergij
Дата сообщения: 12.03.2010 19:50
Автор: wolf0425
Дата сообщения: 13.03.2010 17:54

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


зы: а откуда такие странные прореженные логи взялись?
писать сразу выходной лог в нужном виде, без промежуточных - было никак нельзя?
Автор: sergij
Дата сообщения: 13.03.2010 19:58
Пустые строки тоже надо учитывать так как потом не совпадёт инфа у меня сейчас имеются очищенные текстовики - там всё идёт через строчку сверху вниз -так вот их и надо объединить в один с горизонтальным выводом

Код:
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                                                
Автор: wolf0425
Дата сообщения: 14.03.2010 00:06
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
)))))
Автор: lorents
Дата сообщения: 14.03.2010 14:34
Подскажите, пожалуйста, может ли батник работать с библиотеками (*.dll)?
Автор: 01MDM
Дата сообщения: 14.03.2010 15:26
lorents,
Только с теми, которые могут быть вызваны с помощью rundll32

Автор: lorents
Дата сообщения: 14.03.2010 16:36
01MDM
Понятно, меня интересует вот эта библиотека
http://www.betterjpeg.com/downloads/bjpglib04.zip
Будет ли работать батник через эту библиотеку?
Автор: mugil_cephalus
Дата сообщения: 14.03.2010 17:14
lorents
если знаешь entrypoint и optional arguments то должен
Автор: lorents
Дата сообщения: 14.03.2010 17:27
mugil_cephalus
а что это за параметры?
Автор: mugil_cephalus
Дата сообщения: 14.03.2010 17:33
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
Автор: bdvrt
Дата сообщения: 14.03.2010 19:08
Подскажите плз, как сделать автоматическую вставку из буфера обмена, при создании/открытии тхт документа???
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
"встака из буфера??"
Автор: mugil_cephalus
Дата сообщения: 14.03.2010 19:37
bdvrt
http://forum.ru-board.com/topic.cgi?forum=5&topic=16142&start=0
Автор: sergij
Дата сообщения: 14.03.2010 21:14
wolf0425

Имеются 33 очищенных текстовика - идут все они в основном через строчку -но в некоторых эта зависимость другая - но строки все чётные так вот представьте 33 листа с разной инфой - вот их надо склеить по горизонту - извините если что не так
Автор: bdvrt
Дата сообщения: 14.03.2010 21:45

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

Дык, мне надо в батнике какую-то команду прописать...
Автор: king_stiven
Дата сообщения: 14.03.2010 21:59
sergij
таки без геморойчика не склеишь ты пустые строки, for потому что.
Автор: sergij
Дата сообщения: 14.03.2010 22:09
king_stiven

Таки да - поэтому пошёл другим путём но вывод в файл буду делать способом как вверху - а вообще это обработка ini файлов от эвереста - просто много компов ...
Автор: wolf0425
Дата сообщения: 14.03.2010 22:41

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

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

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

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


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

Цитата:
да нет проблемы у 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
))
Автор: mugil_cephalus
Дата сообщения: 15.03.2010 10:37
bdvrt

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

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

Да нет меня далеко не всё устраивает ..... просто как вариант- да данный код переводит на 1-позицию - нечётную встретившуюся строку - но пока других вариантов нет -поэтому и интерес ко всему что советуют люди которые в данном вопросе знатоки
и Ваше решение мне тоже интересно
Автор: mugil_cephalus
Дата сообщения: 15.03.2010 10:47
у меня:

Код: 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
Автор: king_stiven
Дата сообщения: 15.03.2010 11:12
sergij
Вроде всё проходит, но если самая последняя строчка в nnn.log пустая, то опять засада. Хотя напиши тут если один показатель в самом конце nnn.log пустой. как будет выглядеть лог файл
так
...
...
12

или так
...
...
12


?
Автор: mugil_cephalus
Дата сообщения: 15.03.2010 12:23
king_stiven

Цитата:
но если самая последняя строчка в nnn.log пустая, то опять засада.

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

Код: 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

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

Предыдущая тема: XP не видит второй раздел на съемном USB-HDD


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.