Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
3 / 3 / 3
Регистрация: 30.09.2014
Сообщений: 79

Отфильтровать строки из 1.txt по критерию

25.10.2014, 22:53. Показов 2284. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Например есть следующий код

XML
1
2
3
4
5
6
7
8
9
10
<variable name="count" type="int">1</variable>
<variable name="data" type="Octets">0a000000082e01000100e0d9</variable>
<variable name="expire_date" type="int">0</variable>
<variable name="guid1" type="int">0</variable>
<variable name="guid2" type="int">0</variable>
<variable name="id" type="int">48110</variable>
<variable name="mask" type="int">16384</variable>
<variable name="max_count" type="int">1</variable>
<variable name="pos" type="int">14</variable>
<variable name="proctype" type="int">0</variable>
Нужно,что бы он мне вывел строку например <variable name="id" type="int">48110</variable> в файл Char.txt
Как сие чудо сделать?
Т.е. он брал бы эту строку,а именно число "48110" и записывал его в Char.txt как:
Предмет ID = ...
Похожего не нашел О_о,ткните пальцем.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.10.2014, 22:53
Ответы с готовыми решениями:

Изменить отдельные строки в *.txt файлах по критерию
есть текстовые файлы (много) =) в которых есть строки типа lengh=1000 hi=500 и т.д.. (текст в файлах идёт строками) хотелось бы...

Отфильтровать данные по критерию из комбобокса
Здраствуйте уважаемые форумчане, пытаюсь отфильтровать данные по критерию из чекбокса, но вылазит ошибка, помогите исправить пожалуйста. ...

Отсортируйте строки таблицы в первую очередь по первому критерию, при равенстве по первому критерию, отсортируйте по второму
Задача готова, надо найти мелкий баг. Есть прямоугольная таблица, содержащая слова. Каждые ее столбец имеет свое имя. Задан набор...

16
 Аватар для ComSpec
3462 / 2000 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
25.10.2014, 23:40
Bash
1
2
3
4
5
6
7
@echo off
 
set name=id
 
findstr /irc:"^\<variable name=\"%name%\" type=\".*\"\>.*\<\/variable\>$" "1.txt">"Char.txt"
 
exit /b
1
3 / 3 / 3
Регистрация: 30.09.2014
Сообщений: 79
26.10.2014, 00:36  [ТС]
Отлично!!!Спасибо большое) А вот на счет "Предмет ID = ..." как сделать?)
0
 Аватар для ComSpec
3462 / 2000 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
26.10.2014, 08:44
Лучший ответ Сообщение было отмечено LiptoN-Mmo-Dev как решение

Решение

Bash
1
2
3
4
5
6
7
8
9
10
11
@echo off
 
set "name=id"
 
for /f "tokens=2 delims=<>" %%i in ('
 findstr /irc:"^\<variable name=\"%name%\" type=\".*\"\>.*\<\/variable\>$" "1.txt"
') do (
 echo Предмет ID = %%i>"Char.txt"
 )
 
exit /b
2
3 / 3 / 3
Регистрация: 30.09.2014
Сообщений: 79
26.10.2014, 14:49  [ТС]
Огромное спасибо!!!

Добавлено через 49 минут
И еще 1 вопрос,как сделать,что бы он например брал от сюда "ОКТЕТ" т.е. длинную строчку
XML
1
2
3
4
5
for /f "tokens=2 delims=<>" %%j in ('
findstr /irc:"^\<variable name=\"%skills%\" type=\".*\"\>.*\<\/variable\>$" "%xml%"
') do (
 echo Октет скилов: %%j>>"%xmlQ%"
 )
И разбивал ее на 8 цифр (т.е. например 11111111 22222222 33333333 и т.п.)

Добавлено через 6 минут
А хотя не надо)

Добавлено через 1 час 50 минут
XML
1
2
3
 set mun=%%p*60
 set day=%%p*60*24
 echo Время в игре: %%p сек или %mun% минут или %day% дней>>"%xmlQ%"
Он не умножает %%p,а просто выводит пробел. Почему?
0
 Аватар для ComSpec
3462 / 2000 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
26.10.2014, 15:06
Bash
1
set /a
.
0
3 / 3 / 3
Регистрация: 30.09.2014
Сообщений: 79
26.10.2014, 15:13  [ТС]
И через него пробовал,не помогло
0
 Аватар для ComSpec
3462 / 2000 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
26.10.2014, 15:20
Bash
1
2
3
4
5
 setlocal enabledelayedexpansion
 set /a mun=%%p*60
 set /a day=%%p*60*24
 echo Время в игре: %%p сек или !mun! минут или !day! дней>>"%xmlQ%"
 endlocal
1
3 / 3 / 3
Регистрация: 30.09.2014
Сообщений: 79
26.10.2014, 17:15  [ТС]
Спасибо!!!

Добавлено через 1 час 33 минуты
еще вопрос )

как мне сделать,что бы он пропускал например 20 строк и потом только начинал выводить ID?
Bash
1
2
3
4
5
for /f "tokens=2 delims=<>" %%n in ('
findstr /irc:"^\<variable name=\"%id%\" type=\".*\"\>.*\<\/variable\>$" "%xml%"
') do (
 echo Предмет ID: %%n>>"%xmlQ%"
 )
Добавлено через 1 минуту
Bash
1
for /f "UsebackQ skip=50 tokens=2 delims=<>" %%n in ('
Не помог

Добавлено через 10 минут
И еще 1 вопрос х)
XML
1
2
3
4
5
6
<variable name="count" type="int">1</variable>
<variable name="data" type="Octets">8200ff024a</variable>
<variable name="expire_date" type="int">0</variable>
<variable name="guid1" type="int">1414265290</variable>
<variable name="guid2" type="int">16785174</variable>
<variable name="id" type="int">45323</variable>
Как вывести от сюда данные в след. формате:
Предмет ID: ... [Octets:...]
Где Octets
XML
1
<variable name="data" type="Octets">8200ff024a</variable>
0
 Аватар для ComSpec
3462 / 2000 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
26.10.2014, 17:33
LiptoN-Mmo-Dev, попробуйте
Bash
1
for /f "skip=20 tokens=2 delims=<>" %%n in ('
и в случае возникновения новых вопросов приводите полностью как код Вашего пакетного файла, так и код XML.
0
3 / 3 / 3
Регистрация: 30.09.2014
Сообщений: 79
26.10.2014, 19:29  [ТС]
Bash
1
for /f "skip=20 tokens=2 delims=<>" %%n in ('
Тоже не работает.

Вот сам батник и сам XML код: https://yadi.sk/d/8rSOOdENcJDPR
Не могу понять как реализовать вывод данные последнего пакета Т.е. IDов предметов
Хотелось бы,что бы выводил:
Предмет ID: %%n [Октет:%%W]>>"%xmlQ%"

за октет отвечает строка
XML
1
<variable name="data" type="Octets">00000</variable>
Например
XML
1
2
3
4
5
6
7
8
9
10
11
12
<inv>
<variable name="count" type="int">1</variable>
<variable name="data" type="Octets">00000</variable>
<variable name="expire_date" type="int">0</variable>
<variable name="guid1" type="int">1413990259</variable>
<variable name="guid2" type="int">16784336</variable>
<variable name="id" type="int">23754</variable>
<variable name="mask" type="int">8388608</variable>
<variable name="max_count" type="int">1</variable>
<variable name="pos" type="int">23</variable>
<variable name="proctype" type="int">23</variable>
</inv>
Нужно,что бы он вывел в Char.txt:
Предмет ID: %%p [Октет:%%w]
Пример: Предмет ID: 23754 [Октет:00000]
0
 Аватар для ComSpec
3462 / 2000 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
27.10.2014, 01:17
Bash
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
@echo off
 
:: =======SETTING===========
:: Откуда берем данные:
set "xml=1.txt"
:: Куда записываем:
set "xmlQ=Char.txt"
:: =========================
 
@>"%xmlQ%" (
for %%i in (
 "name=Имя"
 "cls=Класс"
 "gender=Пол"
 "level=Уровень"
 "exp=Опыт"
 "sp=Дух"
 "level2=Культивация"
 "hp=HP"
 "mp=MP"
 "posx=Позиция X"
 "posy=Позиция Y"
 "posz=Позиция Z"
 "reputation=Репутация"
 "skills=Октет скилов"
 "time_used=Время в игре"
 "id=Предмет ID"
 ) do @(
 for /f "tokens=1,2 delims==" %%j in (%%i) do @(
  set m=
  for /f "tokens=2 delims=<>" %%l in ('
   findstr /irc:"^\<variable name=\"%%j\" type=\".*\"\>.*\<\/variable\>$" "%xml%"
  ') do @(
   set /a m+=1
   if "%%j"=="cls" (
    for /l %%m in (0 1 9) do @(
     set n=-1
     for %%n in (
      Воин
      Маг
      Друид
      Оборотень
      Ассасин
      Шаман
      Лучник
      Жрец
      Страж
      Мистик
      ) do @(
      set /a n+=1
      for /f %%o in ('
       set /a n
      ') do @(
       if "%%l"=="%%m" (
        if "%%l"=="%%o" (
         echo %%k: %%n
         )
        )
       )
      )
     )
    ) else (
    if "%%j"=="gender" (
     if "%%l"=="0" (
      echo %%k: Муж.
      )
     if "%%l"=="1" (
      echo %%k: Жен.
      )
     ) else (
     if "%%j"=="time_used" (
      set /a min=%%l/60
      set /a hours=%%l/3600
      set /a days=%%l/3600/24
      call echo %%k: %%l секунд, или %%min%% минут [%%hours%% часов], или %%days%% дней.
      ) else (
      if "%%j"=="id" (
       for /f %%m in ('
        set /a m
       ') do @(
        if %%m==1 (
         echo.
         echo.
         echo Предметы, лежащие в сумке:
         echo.
         )
        for /f "tokens=3 delims=<>" %%n in ('
         findstr /irc:"^\<variable name=\"data\" type=\"Octets\".*\>$" "%xml%"^| findstr /n "^"^| findstr "^%%m:"
        ') do @(
         echo %%k: %%l [Октет: %%n]
         )
        )
       ) else (
       echo %%k: %%l
       )
      )
     )
    )
   )
  )
 )
)
 
exit /b

LiptoN-Mmo-Dev, не сохраняйте этот пакетный файл в кодировке DOS-866, а оставьте, как есть, в кодировке WIN-1251.
2
3 / 3 / 3
Регистрация: 30.09.2014
Сообщений: 79
27.10.2014, 06:19  [ТС]
ComSpec, вау!) Но вот только он все равно берет не нужный мне ID) Мне его надо как то пропустить)
0
 Аватар для ComSpec
3462 / 2000 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
27.10.2014, 11:37
LiptoN-Mmo-Dev, исходя из содержания выложенного файла "1.txt", какие именно "ID" надо пропустить или какие именно "ID" оставить?
0
3 / 3 / 3
Регистрация: 30.09.2014
Сообщений: 79
27.10.2014, 15:26  [ТС]
ComSpec, http://dl1.joxi.net/drive/0004... 6fdf92.jpg
В самом начале почти он

Добавлено через 7 минут
А оставить собсна все после него
0
 Аватар для ComSpec
3462 / 2000 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
28.10.2014, 02:10
LiptoN-Mmo-Dev, учёл Ваше замечание:


Bash
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
@echo off
 
:: =======SETTING===========
:: Откуда берем данные:
set "xml=1.txt"
:: Куда записываем:
set "xmlQ=Char.txt"
:: =========================
 
@>"%xmlQ%" (
for %%i in (
 "name=Имя"
 "cls=Класс"
 "gender=Пол"
 "level=Уровень"
 "exp=Опыт"
 "sp=Дух"
 "level2=Культивация"
 "hp=HP"
 "mp=MP"
 "posx=Позиция X"
 "posy=Позиция Y"
 "posz=Позиция Z"
 "reputation=Репутация"
 "skills=Октет скилов"
 "time_used=Время в игре"
 "id=Предмет ID"
 ) do @(
 for /f "tokens=1,2 delims==" %%j in (%%i) do @(
  set m=
  for /f "tokens=2 delims=<>" %%l in ('
   findstr /irc:"^\<variable name=\"%%j\" type=\".*\"\>.*\<\/variable\>$" "%xml%"
  ') do @(
   set /a m+=1
   if "%%j"=="cls" (
    for /l %%m in (0 1 9) do @(
     set n=-1
     for %%n in (
      Воин
      Маг
      Друид
      Оборотень
      Ассасин
      Шаман
      Лучник
      Жрец
      Страж
      Мистик
      ) do @(
      set /a n+=1
      for /f %%o in ('
       set /a n
      ') do @(
       if "%%l"=="%%m" (
        if "%%l"=="%%o" (
         echo %%k: %%n
         )
        )
       )
      )
     )
    ) else (
    if "%%j"=="gender" (
     if "%%l"=="0" (
      echo %%k: Муж.
      )
     if "%%l"=="1" (
      echo %%k: Жен.
      )
     ) else (
     if "%%j"=="time_used" (
      set /a min=%%l/60
      set /a hours=%%l/3600
      set /a days=%%l/3600/24
      call echo %%k: %%l секунд, или %%min%% минут [%%hours%% часов], или %%days%% дней.
      ) else (
      if "%%j"=="id" (
       rem: В этом цикле из счётчика строк с "id" выделяется зависимый от него счётчик строк с "data", 
       rem: и оба счётчика "превращаются" в переменные цикла для использования без применения отложенного расширения:
       for /f "tokens=1,2 delims=|" %%m in ('
        set /a m^& set /p"=|"^<nul^& set /a m-1
       ') do @(
        if %%m==1 (
         echo.
         echo.
         echo Предметы, лежащие в сумке:
         echo.
         )
        rem Это условие не "допускает" к разбору в цикле первую строку с "id":
        if %%m gtr 1 (
         for /f "tokens=2,3 delims=<>" %%o in ('
          findstr /irc:"^\<variable name=\"data\" type=\"Octets\".*\>$" "%xml%"^| findstr /n "^"^| findstr "^%%n:"
         ') do @(
          echo %%k: %%l [Октет: %%p]
          )
         )
        )
       ) else (
       echo %%k: %%l
       )
      )
     )
    )
   )
  )
 )
)
 
exit /b

.
1
3 / 3 / 3
Регистрация: 30.09.2014
Сообщений: 79
28.10.2014, 06:25  [ТС]
Огромное спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.10.2014, 06:25
Помогаю со студенческими работами здесь

Каким образом быстро отфильтровать один txt файл другим?
всем привет, собственно вопрос, каким способом быстрее всего будет оставить в результирующем файле строки первого файла, которых нет во...

Функция отбора по заданному критерию для данных из .bin в .txt
Доброго времени суток. Такая проблема: Необходимо из бинарного файла со списком футболистов отобрать в текстовый вратарей. void...

Создать новый файл qa.txt, который будет содержать строки с вопросами и ответами из файлов q.txt и a.txt.
В текстовом редакторе создать два текстовых файла q.txt и a.txt, которые соответственно содержат вопросы и ответы на их. Создать новый файл...

Записать в text3.txt строки, которые есть и в text1.txt, и в text2.txt
Здравствуйте, нужно записать в text3.txt строки, которые есть и в text1.txt, и в text2.txt помогите, пожалуйста

Переписать все строки файла F.txt в файл G.txt, удаляя все пробелы в конце каждой строки
помогите как можно быстрей Дан текстовый файл F.txt. Переписать все строки файла F.txt в файл G.txt, удаляя все пробелы в конце каждой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru