[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何将一个txt文本拆分/分割成两个

本帖最后由 pcl_test 于 2016-7-21 21:15 编辑

文本格式:  
AAAAAAAAAAAAAA
BBBBBBBBBBBBBB
CCCCCCCCCCCCCC
DDDDDDDDDDDDDD等等

我想将一个文本平分成两个TXT文件  也就是说把源文本从中间给拆开分成2个TXT
生成文件格式:
A.TXT
AAAAAAAAAAAAAA
BBBBBBBBBBBBBB

B.TXT
CCCCCCCCCCCCCC
DDDDDDDDDDDDDD

请问用批处理怎么解决啊 先谢谢啦 !

回复 2楼 的帖子

回二楼
我运行后生成了两个文本文件,但是里面的内容都是原文件的内容
我的意思就是你说的,不知道用批处理能不能实现啊?

TOP

  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
心绪平和,眼藏静谧。

TOP

回复 4楼 的帖子

回四楼 你的代码我刚才试了 但是没有达到我想要的效果
我原文本有很多行的,这个代码只是提取了我文本的前四行分成了两个文本啊,我只是想把它给平均分成两个文件,就是前一半生成一个,后一半生成一个,不知道我说的是否明确啊

TOP

回复 5楼 的帖子

不过也要谢谢你
其实我的文本里面还有一些数字,那该怎么办啊?

[ 本帖最后由 luyu0021 于 2008-10-19 17:33 编辑 ]

TOP

  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 编辑 ]

TOP

  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
复制代码
心绪平和,眼藏静谧。

TOP

  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 编辑 ]
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

你是按行分还是按大小分
空行怎么算
  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 编辑 ]

TOP

RE8楼的代码我试过了 真的可行 谢谢你哈 不过我那个文本中间有空行它会被忽略,我不想让它忽略空行改怎么办呢

RE9楼的代码我运行时不知道怎么回事出现invalid number of lines这个是什么意思呀

RE10楼的代码我运行时提示 命令语法不正确  我直接复制的啊 名称也改了 是不是哪句有错误啊

RE11楼我的文本是按行分的,从中间分开

TOP

回复 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 编辑 ]
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原帖由 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  ...


我运行后出现

TOP

每个代码都有些问题,修改如下:
  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替换为你的文件名。
心绪平和,眼藏静谧。

TOP

一下有那么多代码  我想一定有你需要的

TOP

回复 14楼 的帖子

代码已更新,变量HafRow应为HalfRow,这么明显的错误你都发现不了?

另,最好直接贴结果,别截图。

Q: 怎样把CMD窗口里的结果拷贝出来?
A: 右键单击CMD窗口的标题栏->"属性"->"选项"->勾选"快速编辑模式"->然后在CMD窗口用鼠标左键选中想要拷贝的内容->在选中的内容上单击鼠标右键->粘贴到文本文件中即可
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表