Board logo

标题: [文本处理] 批处理如何将一个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

  1. @echo off
  2. split -l 2 yourfile tmp
  3. 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

  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. del file1.txt&del file2.txt
  4. for /f "delims=" %%a in (计时关机.bat) do set /a num+=1
  5. set /a num/=2
  6. for /f "delims=" %%b in (计时关机.bat) do (
  7. set /a num2+=1
  8. if !num2! leq %num% (echo %%b>>file1.txt) else echo %%b>>file2.txt
  9. )
复制代码

[ 本帖最后由 yslyxqysl 于 2008-10-19 18:22 编辑 ]
作者: pusofalse    时间: 2008-10-19 17:38

  1. @echo off
  2. for /f "delims=:" %%a in ('findstr /n /v $ yourfile') do set/a l=%%a/2
  3. split -l %l% yourfile tmp
  4. 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

  1. @echo off
  2. for /f "delims=:" %%a in ('findstr /n .* "test.txt"') do (
  3.   set SumRow=%%a
  4. )
  5. set /a HalfRow=SumRow/2
  6. set /a MinuRow=SumRow-HalfRow
  7. for /f "tokens=1-2 delims=:" %%a in ('findstr /n .* "test.txt"') do (
  8.   if %%a leq %HalfRow% (
  9.     echo.%%b>>"A.TXT"
  10.   )
  11. )
  12. more +%MinuRow% "test.txt">>"B.TXT"
复制代码

[ 本帖最后由 Batcher 于 2008-10-19 19:00 编辑 ]
作者: terse    时间: 2008-10-19 17:44

你是按行分还是按大小分
空行怎么算
  1. @echo off
  2. for /f "delims=" %%i in ('type "a.txt"^|find /v /c ""') do set /a n=%%i/2
  3. for /f "tokens=1* delims=:" %%i in ('findstr /i /n .* a.txt') do (
  4. if %%i gtr %n% (>>a2.txt echo.%%j) else >>a1.txt echo.%%j)
  5. 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
双击运行
结果贴出来看看
  1. for /f "delims=:" %%a in ('findstr /n .* "test.txt"') do (
  2.   set SumRow=%%a
  3. )
  4. set /a HalfRow=SumRow/2
  5. set /a MinuRow=SumRow-HalfRow
  6. for /f "tokens=1-2 delims=:" %%a in ('findstr /n .* "test.txt"') do (
  7.   if %%a leq %HalfRow% (
  8.     echo.%%b>>"A.TXT"
  9.   )
  10. )
  11. more +%MinuRow% "test.txt">>"B.TXT"
  12. 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

每个代码都有些问题,修改如下:
  1. @echo off
  2. for /f "delims=:" %%a in ('findstr /n .* "yourfile"') do set/a n=%%a/2
  3. for /f "tokens=1* delims=:" %%i in ('findstr /n .* "yourfile"') do (
  4.       if %%i leq %n% (>>a.txt echo.%%j) else (>>b.txt echo.%%j)
  5. )
  6. 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