PDA

Показать полную графическую версию : Сортировка по доменам


bboutte
30-05-2014, 18:08
Помогите написать сортировку по доменам.


FINDSTR /c:"@mail" 1.txt>Mail.txt
FINDSTR /c:"@bk" 1.txt>Mail.txt
FINDSTR /c:"@list" 1.txt>Mail.txt
FINDSTR /c:"@inbox" 1.txt>Mail.txt
FINDSTR /c:"@yandex" 1.txt>Yandex.txt
FINDSTR /c:"@ya." 1.txt>Yandex.txt
FINDSTR /c:"@narod" 1.txt>Yandex.txt

После того, как отсортировалось, в файле Mail домен только inbox, а в файле Yandex narod. Помогите пожалуйста, чтобы текст добавлялся в файл, а не пересоздавал его

Georgio
30-05-2014, 18:52
@echo off
setlocal enabledelayedexpansion
for %%i in (
@mail
@bk
@list
@inbox
@yandex
@ya.
@narod
) do (
set /a n+=1
if !n! leq 4 (
set "file=Mail.txt"
) else (
set "file=Yandex.txt"
)
findstr /lic:"%%i" "1.txt">>"!file!"
)
endlocal
exit /b

Habetdin
30-05-2014, 20:13
bboutte, для повторяющихся назначений измените перенаправление вывода (>) на перенаправление с добавлением (>>):
FINDSTR /c:"@mail" 1.txt >Mail.txt
FINDSTR /c:"@bk" 1.txt>>Mail.txt
FINDSTR /c:"@list" 1.txt>>Mail.txt
FINDSTR /c:"@inbox" 1.txt>>Mail.txt
FINDSTR /c:"@yandex" 1.txt >Yandex.txt
FINDSTR /c:"@ya." 1.txt>>Yandex.txt
FINDSTR /c:"@narod" 1.txt>>Yandex.txt

Iska
30-05-2014, 20:29
Можно ещё вспомнить, что параметр «/c» может быть множественным. Сие к тому же позволит сократить число проходов:
type "1.txt"|>"Mail.txt" findstr.exe /c:"@mail" /c:"@bk" /c:"@list" /c:"@inbox"
type "1.txt"|>"Yandex.txt" findstr.exe /c:"@yandex" /c:"@ya" /c:"@narod"




© OSzone.net 2001-2012