中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-12 01:36
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 顺序排列文本内容的问题 查看 1,278 回复 13
楼 主 顺序排列文本内容的问题 发表于 2008-05-14 18:36 ·  中国 广东 深圳 福田区 电信
初级用户
积分 87
发帖 48
注册 2006-11-06 00:57
19年会员
UID 69720
性别 男
状态 离线
文本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


搜索了论坛没有这样的批处理内容,呵呵,希望有高手帮我看看.
2 发表于 2008-05-14 18:44 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
体力活~
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
3 发表于 2008-05-14 20:19 ·  中国 广东 深圳 福田区 电信
初级用户
积分 87
发帖 48
注册 2006-11-06 00:57
19年会员
UID 69720
性别 男
状态 离线
所以不知道怎么办
呵呵
应该批处理是可以实现吧
4 发表于 2008-05-14 20:23 ·  中国 广东 深圳 福田区 电信
初级用户
积分 87
发帖 48
注册 2006-11-06 00:57
19年会员
UID 69720
性别 男
状态 离线
如果考虑把空行的内容提取为几个新的文本,以第一行的字母数字再判断添加成一个新的文本.....可是我不懂怎么用批处理写出来
5 发表于 2008-05-14 21:36 ·  中国 四川 自贡 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  演示代码如下:

@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
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
xeibobin +2 2008-05-15 11:22
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
6 发表于 2008-05-14 22:39 ·  中国 上海 电信
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
哇噢,JM回来啦...............
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
xeibobin +1 2008-05-15 11:21
7 发表于 2008-05-14 23:58 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线

@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
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
xeibobin +2 2008-05-16 11:48
致精致简!
8 发表于 2008-05-15 00:26 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线

@echo off
cd.>b.txt
for /f "tokens=1* delims=:" %%i in ('findstr /in "^A$" "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
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
xeibobin +2 2008-05-15 11:21
简单!简单!再简单!
9 发表于 2008-05-15 11:37 ·  中国 广东 深圳 福田区 电信
初级用户
积分 87
发帖 48
注册 2006-11-06 00:57
19年会员
UID 69720
性别 男
状态 离线
谢谢namejm,26933062,terse,都试了可以用,就是26933062的批处理偶尔会出错,没有关系了,现在已经可以了,就是懵懵懂懂看不大明白意思,呵呵,正在学习中了....
10 发表于 2008-05-15 11:39 ·  中国 广东 深圳 福田区 电信
初级用户
积分 87
发帖 48
注册 2006-11-06 00:57
19年会员
UID 69720
性别 男
状态 离线
评分评错了,到时候再加给26933062,不好意思,现在加不了
11 发表于 2008-05-15 13:12 ·  中国 上海 联通
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
Originally posted by xeibobin at 2008-5-15 11:37 AM:
谢谢namejm,26933062,terse,都试了可以用,就是26933062的批处理偶尔会出错,没有关系了,现在已经可以了,就是懵懵懂懂看不大明白意思,呵呵,正在学习中了....

哪句代码看不懂就问哪句,自然有人给你讲解的^_^
12 发表于 2008-05-15 20:12 ·  中国 江苏 常州 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
Originally posted by xeibobin at 2008-5-15 11:39:
评分评错了,到时候再加给26933062,不好意思,现在加不了

评错了55555555 我退给你吧
简单!简单!再简单!
13 发表于 2008-05-16 11:50 ·  中国 广东 深圳 福田区 电信
初级用户
积分 87
发帖 48
注册 2006-11-06 00:57
19年会员
UID 69720
性别 男
状态 离线
Originally posted by terse at 2008-5-15 08:12 PM:

评错了55555555 我退给你吧

呵呵 不好意思 我是说我小心点给了moniuming
14 发表于 2010-07-29 01:14 ·  中国 海南 海口 电信
新手上路
积分 1
发帖 1
注册 2010-06-20 11:05
16年会员
UID 169192
性别 男
状态 离线
都是高手啊!
论坛跳转: