中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请问批处理可以按要求拆分多个文本文件吗
作者:
标题: 请问批处理可以按要求拆分多个文本文件吗 上一主题 | 下一主题
88xi
新手上路





积分 6
发帖 2
注册 2007-10-15
状态 离线
『楼 主』:  请问批处理可以按要求拆分多个文本文件吗

我想把一个文件夹下多个文本,按30行来拆分,并保存在指定的文件夹里,并用原文件名命名。
比如:文件夹里有a.txt、b.txt、c.txt....把他们按30行来分割,保存在d:\wj里,并命名为a1.txt、a2.txt、a3.txt....b1.txt、b2.txt...c1.txt、c2.txt....如何实现?

2007-10-15 13:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  

a.txt 按30行一个文件拆分为a1.txt、a2.txt、a3.txt ?

2007-10-15 15:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
88xi
新手上路





积分 6
发帖 2
注册 2007-10-15
状态 离线
『第 3 楼』:  

是的

2007-10-15 16:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Auto
初级用户





积分 64
发帖 27
注册 2007-3-8
状态 离线
『第 4 楼』:  

我也想知道这个...
要是能按分章节拆分的话更好...

2007-12-25 20:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zerocq
中级用户




积分 458
发帖 196
注册 2006-10-5
状态 离线
『第 5 楼』:  

Usage: split.exe [OPTION] [INPUT [PREFIX]]
Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default
PREFIX is `x'.  With no INPUT, or when INPUT is -, read standard input.

  -b, --bytes=SIZE        put SIZE bytes per output file
  -C, --line-bytes=SIZE   put at most SIZE bytes of lines per output file
  -l, --lines=NUMBER      put NUMBER lines per output file
  -NUMBER                 same as -l NUMBER
      --verbose           print a diagnostic to standard error just
                            before each output file is opened
      --help              display this help and exit
      --version           output version information and exit

SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.

Report bugs to <bug-textutils@gnu.org>.


附件无法上传.咋办

2007-12-25 20:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

google搜索“UnxUtils”
里面有split



2007-12-25 21:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





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

能满足否?

  Quote:
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b /a-d "*.txt" 2^>nul') do (
        set id=1
        set num=
        for /f "tokens=1,* delims=:" %%a in ('findstr /n .* "%%i"') do (      
        set/A num+=1
echo/%%b>>"d:\wj\%%~ni!id!.txt"
if !num! GEQ 30 set/A id+=1&set num=
)
)
pause





简单!简单!再简单!
2007-12-25 22:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 8 楼』:  

通过for计数输出会忽略空行,原来讨论过这个问题,好像没办法,否则代码太烦琐,过大文本太慢

2007-12-25 22:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 9 楼』:  

找到一个方法
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "delims=" %%a in ('dir /b *.txt') do (
    for /f "skip=2 tokens=1* delims=[]" %%b in ('find /v /n "" "%%a"') do (
        set /a num=%%b/30+1
        echo.%%c>>"%%~dpna!num!%%~xa"
    )
set num=
)


2007-12-25 22:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: