需要帮助分类

需要帮助分类

好的,我每天都会收到一份报告,一份乘客名单。它只是按照他们接受预订的顺序给出,而不是乘客接送的实际时间。每个订单包含 4 行。第 1 行,客户编号,第 2 行,客户姓名,第 3 行,接送时间(24 小时制),第 4 行接送地址。

我使用 Wordpad,也可以使用 MS Word 2010。我需要按取货时间(24 小时制)对列表进行排序,最早取货的货物排在最前面。第三行最前面是时间(例如:04:15)。有没有更简单的方法可以对列表进行排序,而不必手动查看清单并按顺序复制和粘贴?

答案1

假设您的舱单上每个乘客有 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%"

=!^代码在文本中不起作用。如果需要,可能会修复此问题。

答案2

@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

如果输入文件包含[]=!字符,此程序将失败。如果需要,可以修复此问题。

答案3

以下是示例链接,个人信息已更改并删除。
第三行是 PU(取车)时间,这是我唯一需要的时间。但正如您将从他们的行程编号中看到的那样,每个名字都有 -A 和 -B。A 行程是出发,B 行程是返回。返回时间无关紧要,只有出发时间才重要。但每次 A 和 B 行程都需要按从最早 PU 时间到最晚 PU 时间的顺序一起进行。

我将在下面发布手动排序时的输出内容:

我在写字板中执行此操作并将其保存为 *rtf

因此只有 -A 中的 PU 时间是相关的,但相应的 -b 记录需要伴随它。

以下是列表示例的链接: http://www.docstoc.com/docs/157731527/TRIP-SHEET

以下是输出结果的链接:http://www.docstoc.com/docs/157731398/OUTPUT

不要注意每行下方的 3 个破折号,边距不够宽,应该是一条连续的虚线。

相关内容