Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Помогите скопировать определённе символы с одного файла в другой. (http://forum.oszone.net/showthread.php?t=256203)

kolkin-alexandr 13-03-2013 15:06 2110278

Помогите скопировать определённе символы с одного файла в другой.
 
Суть такая:
У меня есть файл text.log в нём находятся ники людей, и всякой всячины. Ники людей максимум 30 штук.
Пример:

2013.03.13 15:03:48 [D] @SET {"n":"Stef937","id":4290534,"s":0,"v":"STUGIII","t":2}
2013.03.13 15:03:48 [D] @ADD {"n":"TenderGT","id":11337440,"s":0,"v":"KV1","t":2}
2013.03.13 15:03:48 [D] @ADD {"n":"under777","id":11132093,"s":0,"v":"T-34","t":2}
2013.03.13 15:03:48 [D] @ADD {"n":"Tuesok[SLIQ]","id":998370,"s":0,"v":"GB08_CHURCHILL_I","t":1}
2013.03.13 15:03:48 [D] @ADD {"n":"Rast72","id":15568930,"s":0,"v":"PZIII","t":2}
2013.03.13 15:03:48 [D] @ADD {"n":"Time13","id":1861289,"s":0,"v":"VK1602","t":1}
2013.03.13 15:03:48 [D] @ADD {"n":"vitala2","id":12413783,"s":0,"v":"KV-1S","t":1}
2013.03.13 15:03:48 [D] @ADD {"n":"Daniel13","id":2173082,"s":0,"v":"VK3001H","t":1}

Ники: Stef,TenderGT,under777,Tuesok[SLIQ],Rast77,Time13,vitala2,Daniel13
Мне их нужно скопировать в отдельный файл log.txt
Чтобы получилось в файле:

2013.03.13 ник
2013.03.13 ник
2013.03.13 ник

Тоесть дата и ник, и чтобы батник добавлял в файл каждый раз при запуске его, а не заменял.После копирования нужно чтобы первый файл text.log был очищен.
Помогите с батником плиз голова кругом идёт после моих проб, одни ошибки.

megaloman 13-03-2013 19:09 2110506

Код:

@Echo Off
Set File1=Text.Log
Set File2=Log.txt

FOR /F "usebackq tokens=1,8 delims=:, " %%i in ("%File1%") do @echo %%i %%~j>>"%File2%"
Cd >nul 2>"%File1%"


kolkin-alexandr 14-03-2013 04:26 2110781

Спасибо огромное megaloman!!! Всё хорошо! Но единственное я забыл сказать, что в файле Text.log не все садержут ники, получилось вот так:

2013.03.14 WINDOW_SIZE=1600
2013.03.14
2013.03.14
D
MAP_NAME=35_STEPPES
loadEnemyStatsInFogOfWar=true
useStandardMarkers=false
2013.03.14 [BattleLoading]
2013.03.14 grifon21[-UL-]
2013.03.14 snep64rus[164RS]
2013.03.14 MrOTTO[TP-P]
2013.03.14 Maksimusveliky[PK_TP]
2013.03.14 Alen87
2013.03.14 Se_men76[TSIB]
2013.03.14 oleg1581
2013.03.14 KuniZa[B-A-W]
2013.03.14 CheDaV_[4_FUN]
2013.03.14 sharley1425
2013.03.14 MARS_74RUS[VPUZO]

Тоесть те строки где нет ников тоже вписались. Извени за назойливость, можно ли добавить в поиск регулярные выражения которые ставятся перед ником
{"n": , чтобы получилось так:

2013.03.14 grifon21[-UL-]
2013.03.14 snep64rus[164RS]
2013.03.14 MrOTTO[TP-P]
2013.03.14 Maksimusveliky[PK_TP]
2013.03.14 Alen87
2013.03.14 Se_men76[TSIB]
2013.03.14 oleg1581
2013.03.14 KuniZa[B-A-W]
2013.03.14 CheDaV_[4_FUN]
2013.03.14 sharley1425
2013.03.14 MARS_74RUS[VPUZO]

Спасибо за уделённое время и за работу!!!

gora 14-03-2013 10:12 2110870

Цитата:

Цитата kolkin-alexandr
я забыл сказать, что в файле Text.log не все садержут ники »

Что же Вы и со второго раза свой файл не выложили? Опять гадать на кофейной гуще?
Немного подправил файл коллеги megaloman под новые вводные:
Код:

@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 @echo %%i %%~j
)>>"%File2%"
Cd >nul 2>"%File1%"


kolkin-alexandr 14-03-2013 11:26 2110908

Спасибо Вам огромное gora и megaloman!!! Всё отлично работает! Вы облегчили жизнь сразу всему нашему клану!!! Теперь многие просто небудут время терять,
и использовать старый способ ручку и блокнот!Спасибо ВАМ!!!

megaloman 15-03-2013 15:37 2111799

Цитата:

в файле Text.log не все садержут ники
Код:

@Echo Off
Set File1=Text.Log
Set File2=Log.txt

FOR /F "usebackq tokens=1,8,9 delims=:, " %%i in ("%File1%") do If /I %%k=="id" @echo %%i %%~j>>"%File2%"
Cd >nul 2>"%File1%"

или вот такой for вместо предыдущего
Код:

FOR /F "usebackq tokens=1,7,8 delims=:, " %%i in ("%File1%") do If /I %%j=={"n" @echo %%i %%~k>>"%File2%"
В первом анализируем наличие "id", во втором - {"n"
Будет работать, если способ записи строки с никами одинаков.


Время: 13:20.

Время: 13:20.
© OSzone.net 2001-