中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 顺序排列文本内容的问题 上一主题 | 下一主题
xeibobin
初级用户





积分 87
发帖 48
注册 2006-11-6
状态 离线
『楼 主』:  顺序排列文本内容的问题

文本A.txt内容为:

A103
多余的游戏:
cs1.6中文版
QQ华夏
RECYCLER

A105
多余的游戏:
cs1.6中文版
QQ华夏
RECYCLER

A102
多余的游戏:
cs1.6中文版
RECYCLER
华夏Online
春秋Q传
神泣
飚车
缺少的游戏:
QQ飞车
幻想大陆
穿越火线
赤壁

A104
多余的游戏:
cs1.6中文版
QQ华夏
RECYCLER

A098
多余的游戏:
华夏Online
春秋Q传
神泣
飚车
缺少的游戏:
QQ飞车
幻想大陆

是否可以通过批处理变成按顺序排列的另一个文本B.txt:

A098
多余的游戏:
华夏Online
春秋Q传
神泣
飚车
缺少的游戏:
QQ飞车
幻想大陆

A102
多余的游戏:
cs1.6中文版
RECYCLER
华夏Online
春秋Q传
神泣
飚车
缺少的游戏:
QQ飞车
幻想大陆
穿越火线
赤壁

A103
多余的游戏:
cs1.6中文版
QQ华夏
RECYCLER

A104
多余的游戏:
cs1.6中文版
QQ华夏
RECYCLER

A105
多余的游戏:
cs1.6中文版
QQ华夏
RECYCLER


搜索了论坛没有这样的批处理内容,呵呵,希望有高手帮我看看.

2008-5-14 18:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




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

体力活~



心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-5-14 18:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xeibobin
初级用户





积分 87
发帖 48
注册 2006-11-6
状态 离线
『第 3 楼』:  

所以不知道怎么办
呵呵
应该批处理是可以实现吧

2008-5-14 20:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xeibobin
初级用户





积分 87
发帖 48
注册 2006-11-6
状态 离线
『第 4 楼』:  

如果考虑把空行的内容提取为几个新的文本,以第一行的字母数字再判断添加成一个新的文本.....可是我不懂怎么用批处理写出来

2008-5-14 20:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 5 楼』:  

  演示代码如下:
@echo off
:: 行内不能包含空格
:: 程序名不能以A打头,不能包含半角逗号和分号
:: 速度有点慢
cd.>tmp.txt
for /f "delims=" %%i in (A.txt) do (
    set "str=%%i"
    setlocal enabledelayedexpansion
    if "!str:~0,1!"=="A" (
        echo.>>tmp.txt
        set var=%%i
    ) else (
        endlocal&set var=!var!
    )
    set /p str!var!=%%i <nul>>tmp.txt
    endlocal
)
cd.>B.txt
for /f "delims=" %%i in ('sort tmp.txt') do (
    for %%j in (%%i) do >>B.txt echo %%j
    echo.>>B.txt
)
del tmp.txt
start B.txt


   此帖被 +2 点积分    点击查看详情   
评分人:【 xeibobin 分数: +2  时间:2008-5-15 11:22




尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2008-5-14 21:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 6 楼』:  

哇噢,JM回来啦...............

   此帖被 +1 点积分    点击查看详情   
评分人:【 xeibobin 分数: +1  时间:2008-5-15 11:21


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





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


@echo off&setlocal enabledelayedexpansion
if "%~1"=="" (
   for /f "tokens=1* delims= " %%a in ('"%~0" h^|sort') do (
      if "%%b"=="" (echo.) else echo.%%b
    )
    pause&exit
)
for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt') do (
  set "str=%%b"
  if "!str:~0,1!"=="A" set var=%%b
  if "%%b"=="" (echo !var!) else echo !var! %%b
)
goto :eof


   此帖被 +2 点积分    点击查看详情   
评分人:【 xeibobin 分数: +2  时间:2008-5-16 11:48




致精致简!
2008-5-14 23:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 8 楼』:  


@echo off
cd.>b.txt
for /f "tokens=1* delims=:" %%i in ('findstr /in "^A[0-9][0-9][0-9]$" "A.txt"^|sort') do set .%%j=%%i
for /f "tokens=1,2 delims=.=" %%i in ('set.') do call:lp %%i %%j
pause
goto :eof
:lp
set .%1=
set/a n=%2-1
if %2 equ 1 (set skip=) else set skip=skip=%n%
for /f "%skip% delims=" %%i in (A.txt) do (
       if defined .%%i echo.>>b.txt&goto :eof
       >>b.txt echo %%i&set .%1=ok
)
echo.>>b.txt


   此帖被 +2 点积分    点击查看详情   
评分人:【 xeibobin 分数: +2  时间:2008-5-15 11:21




简单!简单!再简单!
2008-5-15 00:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xeibobin
初级用户





积分 87
发帖 48
注册 2006-11-6
状态 离线
『第 9 楼』:  

谢谢namejm,26933062,terse,都试了可以用,就是26933062的批处理偶尔会出错,没有关系了,现在已经可以了,就是懵懵懂懂看不大明白意思,呵呵,正在学习中了....

2008-5-15 11:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xeibobin
初级用户





积分 87
发帖 48
注册 2006-11-6
状态 离线
『第 10 楼』:  

评分评错了,到时候再加给26933062,不好意思,现在加不了

2008-5-15 11:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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



  Quote:
Originally posted by xeibobin at 2008-5-15 11:37 AM:
谢谢namejm,26933062,terse,都试了可以用,就是26933062的批处理偶尔会出错,没有关系了,现在已经可以了,就是懵懵懂懂看不大明白意思,呵呵,正在学习中了....

哪句代码看不懂就问哪句,自然有人给你讲解的^_^

2008-5-15 13:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 12 楼』:  



  Quote:
Originally posted by xeibobin at 2008-5-15 11:39:
评分评错了,到时候再加给26933062,不好意思,现在加不了

评错了55555555 我退给你吧



简单!简单!再简单!
2008-5-15 20:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xeibobin
初级用户





积分 87
发帖 48
注册 2006-11-6
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by terse at 2008-5-15 08:12 PM:

评错了55555555 我退给你吧

呵呵 不好意思 我是说我小心点给了moniuming

2008-5-16 11:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhu8988850
新手上路





积分 1
发帖 1
注册 2010-6-20
状态 离线
『第 14 楼』:  

都是高手啊!

2010-7-29 01:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: