标题: [文本处理] 批处理如何将一个txt文本拆分/分割成两个 [打印本页]
作者: luyu0021 时间: 2008-10-19 15:56 标题: 批处理如何将一个txt文本拆分/分割成两个
本帖最后由 pcl_test 于 2016-7-21 21:15 编辑
文本格式:
AAAAAAAAAAAAAA
BBBBBBBBBBBBBB
CCCCCCCCCCCCCC
DDDDDDDDDDDDDD等等
我想将一个文本平分成两个TXT文件 也就是说把源文本从中间给拆开分成2个TXT
生成文件格式:
A.TXT
AAAAAAAAAAAAAA
BBBBBBBBBBBBBB
B.TXT
CCCCCCCCCCCCCC
DDDDDDDDDDDDDD
请问用批处理怎么解决啊 先谢谢啦 !
作者: luyu0021 时间: 2008-10-19 16:57 标题: 回复 2楼 的帖子
回二楼
我运行后生成了两个文本文件,但是里面的内容都是原文件的内容
我的意思就是你说的,不知道用批处理能不能实现啊?
作者: pusofalse 时间: 2008-10-19 17:11
- @echo off
- split -l 2 yourfile tmp
- for %%a in (tmp*) do if not defined a (set a=a&ren "%%a" a.txt) else ren "%%a" b.txt
复制代码
split.exe下载:http://bbs.bathome.net/thread-1114-1-1.html
作者: luyu0021 时间: 2008-10-19 17:29 标题: 回复 4楼 的帖子
回四楼 你的代码我刚才试了 但是没有达到我想要的效果
我原文本有很多行的,这个代码只是提取了我文本的前四行分成了两个文本啊,我只是想把它给平均分成两个文件,就是前一半生成一个,后一半生成一个,不知道我说的是否明确啊
作者: luyu0021 时间: 2008-10-19 17:31 标题: 回复 5楼 的帖子
不过也要谢谢你
其实我的文本里面还有一些数字,那该怎么办啊?
[ 本帖最后由 luyu0021 于 2008-10-19 17:33 编辑 ]
作者: yslyxqysl 时间: 2008-10-19 17:33
- @echo off
- setlocal ENABLEDELAYEDEXPANSION
- del file1.txt&del file2.txt
- for /f "delims=" %%a in (计时关机.bat) do set /a num+=1
- set /a num/=2
- for /f "delims=" %%b in (计时关机.bat) do (
- set /a num2+=1
- if !num2! leq %num% (echo %%b>>file1.txt) else echo %%b>>file2.txt
- )
复制代码
[ 本帖最后由 yslyxqysl 于 2008-10-19 18:22 编辑 ]
作者: pusofalse 时间: 2008-10-19 17:38
- @echo off
- for /f "delims=:" %%a in ('findstr /n /v $ yourfile') do set/a l=%%a/2
- split -l %l% yourfile tmp
- for %%a in (tmp*) do if not defined a (set "a=a"&ren "%%a" a.txt) else ren "%%a" b.txt
复制代码
作者: Batcher 时间: 2008-10-19 17:39
- @echo off
- for /f "delims=:" %%a in ('findstr /n .* "test.txt"') do (
- set SumRow=%%a
- )
- set /a HalfRow=SumRow/2
- set /a MinuRow=SumRow-HalfRow
- for /f "tokens=1-2 delims=:" %%a in ('findstr /n .* "test.txt"') do (
- if %%a leq %HalfRow% (
- echo.%%b>>"A.TXT"
- )
- )
- more +%MinuRow% "test.txt">>"B.TXT"
复制代码
[ 本帖最后由 Batcher 于 2008-10-19 19:00 编辑 ]
作者: terse 时间: 2008-10-19 17:44
你是按行分还是按大小分
空行怎么算
- @echo off
- for /f "delims=" %%i in ('type "a.txt"^|find /v /c ""') do set /a n=%%i/2
- for /f "tokens=1* delims=:" %%i in ('findstr /i /n .* a.txt') do (
- if %%i gtr %n% (>>a2.txt echo.%%j) else >>a1.txt echo.%%j)
- pause
复制代码
[ 本帖最后由 terse 于 2008-10-19 19:20 编辑 ]
作者: luyu0021 时间: 2008-10-19 18:01
RE8楼的代码我试过了 真的可行 谢谢你哈 不过我那个文本中间有空行它会被忽略,我不想让它忽略空行改怎么办呢
RE9楼的代码我运行时不知道怎么回事出现invalid number of lines这个是什么意思呀
RE10楼的代码我运行时提示 命令语法不正确 我直接复制的啊 名称也改了 是不是哪句有错误啊
RE11楼我的文本是按行分的,从中间分开
作者: Batcher 时间: 2008-10-19 18:05 标题: 回复 12楼 的帖子
代码保存为test.bat
双击运行
结果贴出来看看- for /f "delims=:" %%a in ('findstr /n .* "test.txt"') do (
- set SumRow=%%a
- )
- set /a HalfRow=SumRow/2
- set /a MinuRow=SumRow-HalfRow
- for /f "tokens=1-2 delims=:" %%a in ('findstr /n .* "test.txt"') do (
- if %%a leq %HalfRow% (
- echo.%%b>>"A.TXT"
- )
- )
- more +%MinuRow% "test.txt">>"B.TXT"
- pause
复制代码
[ 本帖最后由 Batcher 于 2008-10-19 19:00 编辑 ]
作者: luyu0021 时间: 2008-10-19 18:19
原帖由 Batcher 于 2008-10-19 18:05 发表
代码保存为test.bat
双击运行
结果贴出来看看for /f "delims=:" %%a in ('findstr /n .* "test.txt"') do (
set SumRow=%%a
)
set /a HalfRow=SumRow/2
set /a MinuRow=SumRow-HalfRow
for /f "tokens=1-2 ...
我运行后出现
作者: pusofalse 时间: 2008-10-19 18:44
每个代码都有些问题,修改如下:- @echo off
- for /f "delims=:" %%a in ('findstr /n .* "yourfile"') do set/a n=%%a/2
- for /f "tokens=1* delims=:" %%i in ('findstr /n .* "yourfile"') do (
- if %%i leq %n% (>>a.txt echo.%%j) else (>>b.txt echo.%%j)
- )
- pause
复制代码
把代码中的yourfile替换为你的文件名。
作者: terse 时间: 2008-10-19 18:44
一下有那么多代码 我想一定有你需要的
作者: Batcher 时间: 2008-10-19 19:03 标题: 回复 14楼 的帖子
代码已更新,变量HafRow应为HalfRow,这么明显的错误你都发现不了?
另,最好直接贴结果,别截图。
Q: 怎样把CMD窗口里的结果拷贝出来?
A: 右键单击CMD窗口的标题栏->"属性"->"选项"->勾选"快速编辑模式"->然后在CMD窗口用鼠标左键选中想要拷贝的内容->在选中的内容上单击鼠标右键->粘贴到文本文件中即可
作者: luyu0021 时间: 2008-10-19 19:46
感谢各位热心高人的指点
我已经成功解决了问题,谢谢大家啦
本人是个菜鸟,还请大家多多关照
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |