中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何将一个文本文件拆分为多个文本文件?(完结)
作者:
标题: 如何将一个文本文件拆分为多个文本文件?(完结) 上一主题 | 下一主题
worldopener
初级用户





积分 44
发帖 20
注册 2008-4-24
状态 离线
『楼 主』:  如何将一个文本文件拆分为多个文本文件?(完结)

例如有这样一个文本文件:
one;
two;
three;
four;
five;
six;
seven;
eight;
nine;
ten;

如何将这个文本文件的每一行输出成一个新文件,有多少行就有多少个文件?
如:
1.txt:
one

2.txt:
two
.
.
.
.
10.txt:
ten

[ Last edited by worldopener on 2008-4-24 at 05:11 PM ]

2008-4-24 11:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





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

@echo off&setlocal enabledelayedexpansion
for /f "delims=;" %%i in (a.txt) do set/a n+=1&>!n!.txt echo.%%i
pause



简单!简单!再简单!
2008-4-24 11:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
worldopener
初级用户





积分 44
发帖 20
注册 2008-4-24
状态 离线
『第 3 楼』:  

set/a n+=1&>!n!.txt  这句看不懂

2008-4-24 13:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pooronce
中级用户





积分 484
发帖 250
注册 2007-6-5
状态 离线
『第 4 楼』:  

set/a n+=1
for每读一行就n+1

>!n!.txt echo.%%i
等同 echo.%%i>!n!.txt
!n!是扩展延迟下的%n%

&只是连接两个命令的,放一行里以便省去for的括号

2008-4-24 13:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
worldopener
初级用户





积分 44
发帖 20
注册 2008-4-24
状态 离线
『第 5 楼』:  

明白,清楚了,谢谢两位的帮助,感激不尽!!!

2008-4-24 13:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
worldopener
初级用户





积分 44
发帖 20
注册 2008-4-24
状态 离线
『第 6 楼』:  

还想请教一下
假如将文本文件改成这样:
one
one;
two
two;
three
three;
four
four;
five
five;
six
six;
seven
seven;
eight
eight;
nine
nine;
ten
ten;

要想将这个文件分割成这样:
1.txt:
one
one

2.txt:
two
two

3.txt:
three
three
.
.
.
.
10.txt:
ten
ten

又该如何编写代码呢?

2008-4-24 14:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 7 楼』:  

要求一变再变……最好一次问清楚,改的很麻烦的。
给你通用版.
@echo off&setlocal enabledelayedexpansion
::初始化
Set n=0
Set i=1
::设置划分行数
Set k=2
::输出
for /f "delims=;" %%j in (a.txt) do (
    if !n! NEQ %k% (Set /a n+=1) else (Set n=1&Set /a i+=1)
    echo.%%j>>!i!.txt
)
echo 处理完毕!任意键退出……
pause>nul


2008-4-24 16:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





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

@echo off&setlocal enabledelayedexpansion
for /f "delims=;" %%i in (a.txt) do (
set/a n+=1
if not defined %%i (>!n!.txt echo.%%i&set %%i=!n!) else >>!%%i!.txt echo.%%i&set/a n-=1
)
pause



简单!简单!再简单!
2008-4-24 16:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
worldopener
初级用户





积分 44
发帖 20
注册 2008-4-24
状态 离线
『第 9 楼』:  

十分感谢!!

2008-4-24 16:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: