Precisa de ajuda para classificar

1

Ok, eu recebo um relatório todos os dias, um manifesto de passageiro. É apenas dado na ordem que eles tomam a reserva, não o tempo real para o passageiro pegar. Cada pedido contém 4 linhas. Linha 1, número do cliente, linha 2, nome do cliente, linha 3, hora de retirada (relógio de 24 horas) e endereço de retirada de linha 4.

Eu uso o Wordpad ou também posso usar o MS Word 2010. Preciso classificar essa lista pelo tempo de coleta (24 horas) com o primeiro pegar primeiro. A primeira coisa na terceira linha é a hora (ex: 04:15). Existe uma maneira mais fácil de classificar isso sem ter que procurar manualmente esse manifesto e copiá-los e colá-los em ordem?

    
por user2391600 16.05.2013 / 22:47

3 respostas

0

Considere em seu manifesto quatro linhas por passageiro e a linha nº 3 é o critério de classificação que deve funcionar:

@echo off&setlocal enabledelayedexpansion
set "plist=passenger.lst"
set "slist=pass_sort.lst"
set /a counter=10000

for /f "usebackqdelims=" %%i in ("%plist%") do (
    set "line=%%i"
    set /a index=counter%%4
    set /a pasno=counter/4
    set "$a!pasno!!index!=!line!"
    if !index! equ 2 set "$b!line!!counter!=!pasno!"
    set /a counter+=1
)
(for /f "tokens=2delims==" %%i in ('set "$b"') do (
 for /l %%a in (0,1,3) do (
  for /f "delims=" %%x in ("!$a%%i%%a!") do echo(%%x
)))>"%slist%"
type "%slist%"

O código não funciona com =!^ no texto. Isso pode ser corrigido se necessário.

    
por 17.05.2013 / 00:10
0
@echo off
setlocal EnableDelayedExpansion

for %%b in (number name pickTime) do set %%b=
for /F "delims=" %%a in (original.txt) do (
   if not defined number   (set "number=%%a")   else (
   if not defined name     (set "name=%%a")     else (
   if not defined pickTime (set "pickTime=%%a") else (
   set "order[!pickTime!]!number!=!name!=%%a"
   for %%b in (number name pickTime) do set %%b=
   )))
)   
(for /F "tokens=2-5 delims=[]=" %%a in ('set order[') do (
   echo %%b
   echo %%c
   echo %%a
   echo %%d
)) > sorted.txt
type sorted.txt

Este programa falha se o arquivo de entrada tiver []=! caracteres. Isso pode ser corrigido, se necessário.

    
por 17.05.2013 / 03:54
0

Abaixo estão links para exemplo, com informações pessoais alteradas e editadas.
Na terceira linha é o tempo para PU (captador), esta é a única vez que eu preciso passar. mas como você verá pelo seu número de viagem, há um -A e um -B para cada nome. Uma viagem está indo e a viagem B está retornando. o tempo de retorno não importa, apenas o tempo passa. mas cada viagem A e B precisam estar juntas em ordem, desde o horário PU mais antigo até o horário PU mais recente.

Vou postar abaixo o que a saída precisa ter quando as classificar manualmente:

Eu faço isso no Wordpad e salvo como um * rtf

Portanto, apenas o tempo de PU em -A é relevante, mas o registro -b correspondente precisa acompanhá-lo.

Este é o link para o exemplo da lista: link

Aqui está um link para a aparência da saída: link

Não dê atenção aos 3 traços abaixo de cada linha, as margens não foram largas o suficiente, isto é, suponha que seja toda uma linha pontilhada contínua.

    
por 22.05.2013 / 12:12

Tags