中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: (实际问题)考试座位号排版 上一主题 | 下一主题
99122524
初级用户





积分 47
发帖 16
注册 2008-5-6
状态 离线
『楼 主』:  (实际问题)考试座位号排版

考试座位号排版:
要求一:
将1.txt中 (400行内容)
按每50行另存为一文件
要求2:以空格为分隔符 选取文件中第三个参数(数字)按从大到小的顺序重新排列每行
要求3:以空格为分隔符 选取文件中第2个参数(假设为C1,C2……)分别重新集中排列
问 三代码分别如何写

2008-5-8 19:17
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (99122524)  编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  GNU

1.

split -n 50 test.txt

2.

sort +2 xaa.txt

3. 看不懂什么意思

2008-5-8 19:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 3 楼』:  

要求3没看懂,
先把1.txt的内容按要求2重新排列,再按每50行另存为一文件可以吗?



致精致简!
2008-5-8 19:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
99122524
初级用户





积分 47
发帖 16
注册 2008-5-6
状态 离线
『第 4 楼』:  3的意思

意思是找到文本中含有C1的行排放在一起
C2的行又排在一起

1,2,3  能否给完整的代码  谢谢了

2008-5-8 20:20
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (99122524)  编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 5 楼』:  

1
@echo off&setlocal enabledelayedexpansion
set m=0
set n=0
:1
if %m% equ 0 (set /a m+=1) else (set/a m+=50)
set/a n+=50
set x=0
for /f "tokens=*" %%a in (1.txt) do (
  set /a x+=1
  for /l %%i in (%m% 1 %n%) do if !x! equ %%i set str=%%a&echo !str!>>%m%-%n%.txt
)
if %n% lss 400 goto 1
pause

2008-5-8 21:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 6 楼』:  刚上来,我一个个来写吧:

问题一:
@echo off&setlocal enabledelayedexpansion
set m=2
for /f "delims=" %%i in (1.txt) do (
     set /a n+=1
     echo %%i>>!m!.txt
     if !n! equ 50 set n=0&set /a m+=1
)
echo 另存完成!
pause>nul




批处理之家新域名:www.bathome.net
2008-5-8 21:34
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 7 楼』:  第二个问题:

考虑再三为了代码不至于太复杂还是生成一个临时文件好些:
@echo off&setlocal enabledelayedexpansion
for /f "tokens=3 delims= " %%i in (1.txt) do set str=!str! n%%in
for %%i in (!str!) do set a=%%i&call :lp
set str=!str:n=!
for %%a in (!str!) do (
     for /f "tokens=1,2,3,4* delims= " %%i in (1.txt) do (
         if %%a equ %%k echo %%i %%j %%k %%l %%m>>2.txt
     )
)
del /q 1.txt&ren 2.txt 1.txt
echo 排序完成!
pause>nul&goto :eof
:lp
for %%i in (!str!) do (
    set b=%%i&set b=!b:~1,-1!&set c=%a:~1,-1%
    if !b! gtr !c! (
       set str=!str:%a% =!
       set str=!str:%%i=%%i %a%!
    )
)
附测试文本:
a b 1 c d e
a b 2 c d e
a b 3 c d e
a b 4 c d e
a b 5 c d e
a b 6 c d e
a b 7 c d e
a b 8 c d e
a b 9 c d e
a b 10 c d e
a b 11 c d e
a b 12 c d e
a b 13 c d e
a b 14 c d e
a b 15 c d e
a b 16 c d e
a b 17 c d e
a b 18 c d e
a b 19 c d e
a b 20 c d e
[ Last edited by zw19750516 on 2008-5-9 at 12:16 AM ]



批处理之家新域名:www.bathome.net
2008-5-8 22:03
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 8 楼』:  第三个问题:

假设是从c1至c10
@echo off
for /l %%i in (1,1,10) do set a=c%%i&call :lp
del /q 1.txt&ren 2.txt 1.txt
echo 重新排列完成!
pause>nul&goto :eof
:lp
for /f "tokens=1,2,3* delims= " %%i in (1.txt) do  if  "%a%"=="%%j" echo %%i %%j %%k %%l>>2.txt
附测试文本:
a c1 b c d e
a c2 b c d e
a c3 b c d e
a c4 b c d e
a c5 b c d e
a c6 b c d e
a c7 b c d e
a c8 b c d e
a c9 b c d e
a c10 b c d e
a c1 b c d e
a c2 b c d e
a c3 b c d e
a c4 b c d e
a c5 b c d e
a c6 b c d e
a c7 b c d e
a c8 b c d e
a c9 b c d e
a c10 b c d e
[ Last edited by zw19750516 on 2008-5-9 at 12:40 AM ]



批处理之家新域名:www.bathome.net
2008-5-8 22:16
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 9 楼』:  太悲哀!!!

悲哀啊,现在的新人提个问题就闪人,连个反馈信息都不想给,看来我是太过于热心了!!!



批处理之家新域名:www.bathome.net
2008-5-8 23:53
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 10 楼』:  

楼主不感谢你,其他人却看在眼里的,论坛需要你这样的热心人。。。
加油。。。。。。



致精致简!
2008-5-8 23:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 11 楼』:  

&&多谢兄弟,其实我没别的意思,我们给的代码不可能每个都正确,也不会每个都自己测试,这就要求我们所帮助的人及时反馈信息,我们才好及时改正啊,我就这个意思。



批处理之家新域名:www.bathome.net
2008-5-9 00:04
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 12 楼』:  

^_^

2008-5-9 00:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
99122524
初级用户





积分 47
发帖 16
注册 2008-5-6
状态 离线
『第 13 楼』:  小弟在此先谢过了

昨天我等了好久 一直没刷新  所以没看到你们的回复  万分的歉意

2008-5-9 10:24
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (99122524)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: