1

Хорошо, я получаю отчет каждый день, пассажирский манифест. Это просто дано в том порядке, в котором они забронировали номер, а не фактическое время, когда пассажир забрал. Каждый заказ содержит 4 строки. Строка 1, номер клиента, строка 2, имя клиента, строка 3, время получения (24-часовые часы) и адрес получения 4-й строки.

Я использую WordPad или я также могу использовать MS Word 2010. Мне нужно отсортировать этот список по времени их получения (24-часовые часы), причем сначала нужно забрать самое раннее. Самое первое в 3-й строке - время (например, 04:15). Существует ли более простой способ сортировки без необходимости вручную просматривать этот манифест, копировать и вставлять его по порядку?

3 ответа3

0

Рассмотрим в своем манифесте 4 строки на пассажира, а строка № 3 - это критерий сортировки, который должен работать:

@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%"

Код не работает с =!^ в тексте. Это может быть исправлено в случае необходимости.

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

Эта программа не работает, если входной файл имеет []=! персонажи. Это может быть исправлено, если это необходимо.

0

Ниже приведены ссылки на пример с личной информацией, измененной и отредактированной.
На третьей строке - Время для PU (пикап), это единственный раз, когда мне нужно пройти. но, как вы увидите по номеру поездки, есть -A и -B для каждого имени. Поездка идет, и поездка B возвращается. время возвращения не имеет значения, только время идет. но каждая поездка A и B должна быть вместе по порядку от самого раннего времени PU к самому последнему времени PU.

Ниже я опубликую, как должен выглядеть вывод, когда я вручную сортирую их:

Я делаю это в Wordpad и сохраняю как * rtf

Таким образом, имеет значение только время PU в -A, но соответствующая запись -b должна сопровождать его.

Вот ссылка на Пример списка: http://www.docstoc.com/docs/157731527/TRIP-SHEET

Вот ссылка на то, как должен выглядеть результат: http://www.docstoc.com/docs/157731398/OUTPUT

Не обращайте внимания на 3 черточки под каждой линией, поля не были достаточно широкими, то есть предполагается, что это одна непрерывная пунктирная линия.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .