中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-08 13:54
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » (实际问题)考试座位号排版 查看 690 回复 12
楼 主 (实际问题)考试座位号排版 发表于 2008-05-08 19:17 ·  中国 湖南 湘潭 电信
初级用户
积分 47
发帖 16
注册 2008-05-06 12:59
18年会员
UID 117887
性别 男
状态 离线
考试座位号排版:
要求一:
将1.txt中 (400行内容)
按每50行另存为一文件
要求2:以空格为分隔符 选取文件中第三个参数(数字)按从大到小的顺序重新排列每行
要求3:以空格为分隔符 选取文件中第2个参数(假设为C1,C2……)分别重新集中排列
问 三代码分别如何写
2 GNU 发表于 2008-05-08 19:33 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
1.

split -n 50 test.txt

2.

sort +2 xaa.txt

3. 看不懂什么意思
3 发表于 2008-05-08 19:33 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
要求3没看懂,
先把1.txt的内容按要求2重新排列,再按每50行另存为一文件可以吗?
致精致简!
4 3的意思 发表于 2008-05-08 20:20 ·  中国 湖南 湘潭 电信
初级用户
积分 47
发帖 16
注册 2008-05-06 12:59
18年会员
UID 117887
性别 男
状态 离线
意思是找到文本中含有C1的行排放在一起
C2的行又排在一起

1,2,3 能否给完整的代码 谢谢了
5 发表于 2008-05-08 21:12 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
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
6 刚上来,我一个个来写吧: 发表于 2008-05-08 21:34 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
问题一:

@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
7 第二个问题: 发表于 2008-05-08 22:03 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
考虑再三为了代码不至于太复杂还是生成一个临时文件好些:

@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
8 第三个问题: 发表于 2008-05-08 22:16 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
假设是从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
9 太悲哀!!! 发表于 2008-05-08 23:53 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
悲哀啊,现在的新人提个问题就闪人,连个反馈信息都不想给,看来我是太过于热心了!!!
批处理之家新域名:www.bathome.net
10 发表于 2008-05-08 23:55 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
楼主不感谢你,其他人却看在眼里的,论坛需要你这样的热心人。。。
加油。。。。。。
致精致简!
11 发表于 2008-05-09 00:04 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
&&多谢兄弟,其实我没别的意思,我们给的代码不可能每个都正确,也不会每个都自己测试,这就要求我们所帮助的人及时反馈信息,我们才好及时改正啊,我就这个意思。
批处理之家新域名:www.bathome.net
12 发表于 2008-05-09 00:06 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
^_^
13 小弟在此先谢过了 发表于 2008-05-09 10:24 ·  中国 湖南 湘潭 电信
初级用户
积分 47
发帖 16
注册 2008-05-06 12:59
18年会员
UID 117887
性别 男
状态 离线
昨天我等了好久 一直没刷新 所以没看到你们的回复 万分的歉意
论坛跳转: