CMD/BAT - [решено] Обработка строк с последующей сортировкой

Ответить
Аватара пользователя
pageYK@fb

CMD/BAT - [решено] Обработка строк с последующей сортировкой

Сообщение pageYK@fb »

В файле есть строки типа:

1|21424142|12|Иванов Иван Иванович

2|13214142|8|Петров Петр Ильич

...



Надо разделить число в 3 столбце пополам и отсортировать строки по нему(соответственно поменять 1число - т.к. это и есть нумерация строк)
Аватара пользователя
pageYK@fb

Re: CMD/BAT - [решено] Обработка строк с последующей сортировкой

Сообщение pageYK@fb »

Код:

Код: Выделить всё

@echo off
setlocal enabledelayedexpansion
set "src=list.txt"
set "dest=new_list.txt"
for /f "usebackq tokens=3 delims=|" %%i in ("%src%") do (
 set/a x=%%i/2
 if !x! gtr !max! set/a max=x
)
>"%dest%" (
 for /l %%i in (0 1 %max%) do @(
  for /f "usebackq tokens=2,3* delims=|" %%j in ("%src%") do @(
   set/a x=%%k/2
   if %%i equ !x! (
    set/a n+=1
    echo !n!^|%%j^|%%i^|%%l
   )
  )
 )
)
endlocal
exit/b
Аватара пользователя
alpap

Re: CMD/BAT - [решено] Обработка строк с последующей сортировкой

Сообщение alpap »

Код:

Код: Выделить всё

@echo off
setlocal enabledelayedexpansion
set "f=file.txt"
>$ (for /f "tokens=2,3* delims=|" %%a in ('more') do @set/a x=%%b%%2& if !x!==0 set/a y=%%b/2& echo %%a^|!y!^|%%c)
"%f%" (for /f "delims=" %%a in ('more^|sort/+10') do @set/a n+=1& echo !n!^|%%a)& del $
exit

.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»