Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Помогите удалить повторяющиеся строки в файле.

Ответить
Настройки темы
CMD/BAT - [решено] Помогите удалить повторяющиеся строки в файле.

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Дело в том, что мне помогли с батником на форуме, я из одного файла копировал в другой только дату и ники играков, получается файл на выходе такой:

2013.03.14 ROGRS[SIBRK]
2013.03.14 6BeS9
2013.03.14 vtarasow1140
2013.03.14 SLONikVorkuta
2013.03.14 is_7_KPy4E_BCEX[AVD]
2013.03.14 lavr181[PPLOB]
2013.03.14 Mangyst1977
2013.03.14 ter175
2013.03.14 Dman7[STR_B]
2013.03.14 sasprosys
2013.03.14 Tarcus92
2013.03.14 210581
2013.03.14 kasl_one23
2013.03.14 MiDimMi
2013.03.14 PROHODASASHA[TTK72]
2013.03.14 Tantal06
2013.03.14 worldtanki
2013.03.14 KENWOODyara
2013.03.14 ashepckov
2013.03.14 Oksi88
2013.03.14 aleksis666
2013.03.14 eeeeeeeeeeeeeeeeeeeeere
2013.03.14 T_A_A
2013.03.14 Marson16
2013.03.14 vitek1974
2013.03.14 4empion_mira
2013.03.14 sergejpapa[PK_TP]
2013.03.14 karasius72
2013.03.14 Anclavv
2013.03.14 UMRITEWSENAX[KB-42]
2013.03.14 ROGRS[SIBRK]
2013.03.14 6BeS9
2013.03.14 vtarasow1140
2013.03.14 SLONikVorkuta
2013.03.14 is_7_KPy4E_BCEX[AVD]
2013.03.14 Dman7[STR_B]
2013.03.14 Mangyst1977
2013.03.14 ter175
2013.03.14 lavr181[PPLOB]
2013.03.14 sasprosys
2013.03.14 Tarcus92
2013.03.14 kasl_one23
2013.03.14 210581
2013.03.14 MiDimMi
2013.03.14 PROHODASASHA[TTK72]
2013.03.14 Tantal06
2013.03.14 worldtanki
2013.03.14 KENWOODyara
2013.03.14 Oksi88
2013.03.14 ashepckov
2013.03.14 aleksis666
2013.03.14 eeeeeeeeeeeeeeeeeeeeere
2013.03.14 T_A_A
2013.03.14 Marson16
2013.03.14 vitek1974
2013.03.14 4empion_mira
2013.03.14 sergejpapa[PK_TP]
2013.03.14 karasius72
2013.03.14 Anclavv
2013.03.14 UMRITEWSENAX[KB-42]
2013.03.14 ROGRS[SIBRK]
2013.03.14 6BeS9
2013.03.14 vtarasow1140
2013.03.14 SLONikVorkuta
2013.03.14 is_7_KPy4E_BCEX[AVD]
2013.03.14 Dman7[STR_B]
2013.03.14 Mangyst1977
2013.03.14 ter175
2013.03.14 lavr181[PPLOB]
2013.03.14 sasprosys
2013.03.14 Tarcus92
2013.03.14 kasl_one23
2013.03.14 210581
2013.03.14 MiDimMi
2013.03.14 PROHODASASHA[TTK72]
2013.03.14 Tantal06
2013.03.14 worldtanki
2013.03.14 KENWOODyara
2013.03.14 Oksi88
2013.03.14 ashepckov
2013.03.14 aleksis666
2013.03.14 eeeeeeeeeeeeeeeeeeeeere
2013.03.14 T_A_A
2013.03.14 Marson16
2013.03.14 vitek1974
2013.03.14 4empion_mira
2013.03.14 sergejpapa[PK_TP]
2013.03.14 karasius72
2013.03.14 Anclavv
2013.03.14 UMRITEWSENAX[KB-42]


Тоесть в начальном файле получается повтор ников аж 3 раза, поэтому в исходном также.Хотелось бы чтобы в файле небыло повторов:

2013.03.14 ROGRS[SIBRK]
2013.03.14 6BeS9
2013.03.14 vtarasow1140
2013.03.14 SLONikVorkuta
2013.03.14 is_7_KPy4E_BCEX[AVD]
2013.03.14 lavr181[PPLOB]
2013.03.14 Mangyst1977
2013.03.14 ter175
2013.03.14 Dman7[STR_B]
2013.03.14 sasprosys
2013.03.14 Tarcus92
2013.03.14 210581
2013.03.14 kasl_one23
2013.03.14 MiDimMi
2013.03.14 PROHODASASHA[TTK72]
2013.03.14 Tantal06
2013.03.14 worldtanki
2013.03.14 KENWOODyara
2013.03.14 ashepckov
2013.03.14 Oksi88
2013.03.14 aleksis666
2013.03.14 eeeeeeeeeeeeeeeeeeeeere
2013.03.14 T_A_A
2013.03.14 Marson16
2013.03.14 vitek1974
2013.03.14 4empion_mira
2013.03.14 sergejpapa[PK_TP]
2013.03.14 karasius72
2013.03.14 Anclavv
2013.03.14 UMRITEWSENAX[KB-42]


Помогите плиз ещё!А?

Отправлено: 13:00, 14-03-2013

 

Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Исходные файлы из старой темы.
Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion
Set File1=Text.Log
Set File2=Log.txt

FOR /F "usebackq tokens=*" %%a in ("%File1%") do (
	Set ta=%%a
	If Not !ta!==!ta:{"n":=! FOR /F "tokens=1,8 delims=:, " %%i in ("%%a") do If Not Defined $$$%%~j Set $$$%%~j=1& @echo %%i %%~j
)>>"%File2%"
Cd >nul 2>"%File1%"
Ограничение: ники не должны содержать пробелов!
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:24, 14-03-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата gora:
Log »
Всё!Ура! Классно!!! Вот у Вас голова варит!!!

Отправлено: 14:52, 14-03-2013 | #3


Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


Необходимо убрать строки в Inst_Update.txt, в которых повторяется первый токен, оставив только строку с наибольшим вторым токеном.

Office 2010

есть
Цитата:
...
...
KB982726--20130513
...
KB982726--20130515
...
KB982726--20130512
....
чтобы осталось
Цитата:
....
KB982726--20130515
....
Код: Выделить весь код
@ECHO OFF
setlocal enabledelayedexpansion

SET UNISTALL=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products
FOR /f "tokens=10 delims=\" %%a IN ('reg query "%UNISTALL%" ^|FIND /I "00004109"') DO (
FOR /f "tokens=12 delims=\" %%b IN ('reg query "%UNISTALL%\%%a\Patches"') DO (
FOR /f "tokens=1-3" %%l IN ('reg query "%UNISTALL%\%%a\Patches\%%b" 2^>nul ^| FIND /I "Installed"') do set dat=%%n
FOR /f "tokens=1-3" %%c IN ('reg query "%UNISTALL%\%%a\Patches\%%b" 2^>nul ^| FIND /I "MoreInfoURL"') do (
FOR /f "tokens=4 delims=/" %%g IN ("%%e") DO (
>>Inst_Update.txt ECHO KB%%g--!dat!
))))
exit

Последний раз редактировалось sov44, 25-07-2013 в 19:45.


Отправлено: 11:48, 25-07-2013 | #4


Пользователь


Сообщения: 148
Благодарности: 39

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
@echo off
Setlocal EnableDelayedExpansion EnableExtensions

set src=Inst_Update.txt

set KBCount=0
for /F "UseBackQ tokens=1,2 delims=-" %%K in ("%src%") do (
  if "%%L" neq "" (
    if defined KBID.%%K (
      if !KBID.%%K! LSS %%L set KBID.%%K=%%L
    ) else (
      set /A KBCount+=1
      set KBn.!KBCount!=%%K
      set KBID.%%K=%%L
    )
  )
)
(
for /L %%C in (1,1,%KBCount%) do call echo !KBn.%%C!--%%KBID.!KBn.%%C!%%
) > "Inst_Update2.txt"
pause

-------
Alex Dragokas

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:11, 25-07-2013 | #5


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Немного упростил вариант коллеги Diskretor
Код: Выделить весь код
@echo off
Setlocal EnableDelayedExpansion
set src=Inst_Update.txt

for /F "UseBackQ tokens=1,2 delims=-" %%K in ("%src%") do if !KBID.%%K! LSS %%L set KBID.%%K=%%L
(For /F "tokens=2,3 delims==." %%i In ('Set KBID.') Do Echo %%i--%%j)> "Inst_Update3.txt" 
pause
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:42, 26-07-2013 | #6


Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


Как подправить скрипт поста 6, чтобы в выходном файле по нарастающей сначала шли восьмизначные КВ (KB982726), затем девятизначные КВ (KB2553092) ?

п.с. Возможно есть вариант сортировки выходного файла?

решил, но ищется более изящное решение
читать дальше »
Код: Выделить весь код
@ECHO OFF
setlocal enabledelayedexpansion

:: добавляем ноль к 8 значным КВ
for /f "delims=" %%a in (Inst_Update2-1.txt) do (
set "line=%%a"
if /i "!line:~2,1!"=="9" (>>Inst_Update2-2.txt echo !line:KB9=KB09!) else (>>Inst_Update2-2.txt echo !line!)
)

:: формируем список состоящий из строк КВ без дублей с старшим вторым токеном by gora
for /F "UseBackQ tokens=1,2 delims=--" %%K in ("Inst_Update2-2.txt") do if !KBID.%%K! LSS %%L set KBID.%%K=%%L
(For /F "tokens=2,3 delims==." %%i In ('Set KBID.') Do Echo.%%i--%%j)>Inst_Update2-3.txt

:: убираем ноль, возвращаясь к 8 значным КВ
for /f "delims=" %%a in (Inst_Update2-3.txt) do (
set "line1=%%a"
if /i "!line1:~2,1!"=="0" (>>Inst_Update2-4.txt echo !line1:KB09=KB9!) else (>>Inst_Update2-4.txt echo !line1!)
)

Последний раз редактировалось sov44, 06-08-2013 в 18:05.


Отправлено: 21:50, 05-08-2013 | #7


Пользователь


Сообщения: 148
Благодарности: 39

Профиль | Сайт | Отправить PM | Цитировать


Проверкой наличия 9-го символа.

Код: Выделить весь код
@echo off
Setlocal EnableDelayedExpansion
set src=Inst_Update.txt

for /F "UseBackQ tokens=1,2 delims=-" %%K in ("%src%") do if !KBID.%%K! LSS %%L set KBID.%%K=%%L
(For /F "tokens=2,3 delims==." %%i In ('Set KBID.') Do set _KB=%%i& if "!_KB:~8,1!"=="" Echo %%i--%%j)> "Inst_Update3.txt"
(For /F "tokens=2,3 delims==." %%i In ('Set KBID.') Do set _KB=%%i& if "!_KB:~8,1!" neq "" Echo %%i--%%j)>> "Inst_Update3.txt"

-------
Alex Dragokas

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:07, 14-08-2013 | #8


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Цитата sov44:
чтобы в выходном файле по нарастающей сначала шли восьмизначные КВ (KB982726), затем девятизначные КВ (KB2553092) ? »
Код: Выделить весь код
@echo off
Setlocal EnableDelayedExpansion
set src=Inst_Update.txt

for /F "UseBackQ tokens=1,2 delims=-" %%K in ("%src%") do if !KBID.%%K! LSS %%L set KBID.%%K=%%L
(For %%a In (KB9 KB2) Do For /F "tokens=2,3 delims==." %%i In ('Set KBID.%%a') Do Echo %%i--%%j)> "Inst_Update3.txt"
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:17, 14-08-2013 | #9


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


@echo off
SetLocal EnableDelayedExpansion
for /f "tokens=*" %%i in ('sort 1.txt') do if not !str!==%%i echo !str!>>2.txt & set str=%%i
echo !str!>>2.txt

Последний раз редактировалось muaddib, 03-11-2017 в 23:26.


Отправлено: 23:21, 03-11-2017 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Помогите удалить повторяющиеся строки в файле.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Поиск и изменение строки в файле. climber89 Скриптовые языки администрирования Windows 2 31-01-2013 13:25
2007 - Excel - Повторяющиеся строки JimmOnLine Microsoft Office (Word, Excel, Outlook и т.д.) 7 26-06-2012 06:55
CMD/BAT - Замена строки в txt файле Сергей_Першин@vk Скриптовые языки администрирования Windows 0 07-06-2012 14:56
CMD/BAT - Заменить строки в бат файле Gala.qwer Скриптовые языки администрирования Windows 1 11-08-2011 19:16
[решено] Как удалить строки в текстовом файле при отсутсвии файла в опрелеленном месте? Pozia AutoIt 23 14-05-2009 21:41




 
Переход