[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

【练习-063】根据原始文本分配数据并生成xsl文件

出题目的:
  综合考查大家的变量计算及文本处理能力
解题要求:
  代码高效并尽可能简洁
  请老手们暂不出手,但可跟贴讨论指导新手
加分原则:
  满分30分,视情况加分(思路为重)
题目如下:
  有文本文件char.txt(见附件),四列n行,每一行都是一个客户的信息(区域 姓名 费用 关系人),现在用批处理将这些客户按150户/每人的原则分配到九个人手中(王冬 刘通 文娟娟 马宇芊 候国强 毛远锋 易湛慧 李楠 池茜)并以xls文件保存,同时在分配时要同时满足以下原则:
  1、每人150户不可多也不可少;
  2、王冬 刘通 文娟娟 马宇芊四个人只能分配B区的客户,候国强 毛远锋 易湛慧 李楠 池茜这五人只能分配A区的客户;
  3、每个人要优先分配关系人是自己的客户,如果少于150的则从其他关系人中补足150条;
  4、计算每个人分配到的客户的总费用并标在文件名中,如易湛慧-9865.42;
  5、没有分配完的用户统一放在char.xsl中;
  6、所有xls文件要求全信息输入(区域 姓名 费用 关系人),并且都要在第一行输入这个表头。
说明:
  原始数据足够满足题目的条件,这点不要多虑。
附件char.txt:
链接: https://pan.baidu.com/s/1QhbUKzsuT21ZA9WLSCNj2g 提取码: refu
***共同提高***

小知识:批可以直接生成xls文件,也可对生成的xls进行重操作,前提是你装了office。。。
***共同提高***

TOP

本帖最后由 batman 于 2011-4-18 10:44 编辑

怎么没有人解题了,是太难了吗?这就是一道批的实际应用题啊,相信很多人在工作中会遇到的。。。

如果新手觉得计算难了点,可以不完成计算这一步。。。

唉,要是新手望而怯步,老手们就出手吧。。。
***共同提高***

TOP

唉望眼欲穿啊,下面是本人出题前的解(注意替换tab):
  1. @echo off&setlocal enabledelayedexpansion
  2. set "names=b-王冬 b-刘通 b-文娟娟 b-马宇芊 a-候国强 a-毛远锋 a-易湛慧 a-李楠 a-池茜"
  3. rd /s /q char 2>nul&md char&set "tab= "
  4. for /f "tokens=1-4 delims=%tab%" %%a in (char.txt) do (
  5.     if not defined hard (
  6.        set "hard=a"
  7.        for %%i in (%names%) do (
  8.            for /f "tokens=1-2 delims=-" %%j in ("%%i") do (
  9.                set "%%k=%%j"&echo %%a%tab%%%b%tab%%%c%tab%%%d>char\%%k.xls
  10.                set /a _%%k=0
  11.            )
  12.        )
  13.        ) else (
  14.        if /i "%%a" equ "!%%d!区" if !_%%d! lss 150 set "flag=a"
  15.        if defined flag (
  16.           echo %%a%tab%%%b%tab%%%c%tab%%%d>>char\%%d.xls
  17.           set "flag="&set /a _%%d+=1
  18.           for /f "tokens=1-2 delims=." %%x in ("%%c") do (
  19.               set "a=%%y00"&set /a .%%d+=%%x,..%%d+=1!a:~,2!%%100
  20.               if !..%%d! geq 100 set /a ..%%d-=100,.%%d+=1
  21.           )
  22.           ) else (
  23.           echo %%a %%b %%c %%d>>char\char.xls
  24.        )
  25.    )
  26. )
  27. set "flag="
  28. for %%a in (%names%) do (
  29.     for /f "tokens=1-2 delims=-" %%b in ("%%a") do (
  30.         for /f "tokens=1-4" %%d in (char\char.xls) do (
  31.       if !_%%c! lss 150 if /i "%%d" equ "%%b区" set "flag=a"
  32.             if defined flag (
  33.                echo %%d%tab%%%e%tab%%%f%tab%%%g>>char\%%c.xls
  34.         set /a _%%c+=1&set "flag="
  35.                for /f "tokens=1-2 delims=." %%x in ("%%f") do (
  36.                    set "a=%%y00"&set /a .%%c+=%%x,..%%c+=1!a:~,2!%%100
  37.                    if !..%%c! geq 100 set /a ..%%c-=100,.%%c+=1
  38.                )
  39.                ) else (
  40.                echo %%d%tab%%%e%tab%%%f%tab%%%g>>char\tem
  41.             )  
  42.         )
  43.         if !..%%c! lss 10 set "..%%c=0!..%%c!"
  44.         ren char\%%c.xls %%c-!.%%c!.!..%%c!.xls
  45.         if exist char\tem del /q char\char.xls&ren char\tem char.xls
  46.     )
  47. )
  48. start char
复制代码
***共同提高***

TOP

返回列表