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

[文件操作] [已解决]批处理怎样按指定大小分割txt文档?

家有txt小说若干,常有学生下载到mp4或手机内存卡,一般没有问题。但时间一长,发现有个别的mp4和手机无法打开较长的文档。解决的办法就是将长文件切成若干个小文件。于是乎,不断的复制一小段内容,新建一个txt文档,打开这个新建的文档,粘贴,关闭,保存:然后周而复始地重复这个过程。也许一个小时或几个小时还没完成一部小说的下载,极其麻烦。希望能有一个小程序能一点就解决。大致想法是这样的:输入小说的地址和文件名,回车后,立刻产生一个同名文件夹,文件夹内是按100k切分的若干txt,名字为文件夹名加1、2、3....等,最后的那个文件当然会小于100k。(特别要求,每个切分的txt文档必须以中文句号、英文句号或中英文问号结束,这样可以保证文档的大小不超过100k,并且相对完整的结束。)
谢谢各位回答者和看客。

出效果了,pusofalse,辛苦你了。
虽然最后的效果还不是最满意的。
最满意的是题目要增加为***-1.txt,***_2.txt  ........,并且每篇文档只要求不超过100k,结尾需要以中文句号、英文句号或中英文问号结束,以显文档的相对完整。期待更多的高手。。。

TOP

如果能不用第三方软件更好。

TOP

"每个文件末尾追加一个半角句号", 追加的句号不是自然的句号?那也不太好呀。
很难吗?用c语言可以解决这个问题吗?

TOP

以下为儿子所写“分小说”软件的c代码,我一直在用“分小说”软件,还行,也就是还没有实现“以中文句号、英文句号或中英文问号结束”,所以求助。还有一点,是否有什么bug或者是否可以瘦身,或提高效率。请指教。
include "stdio.h"
main(){
  FILE *fp,*in,*ot;
  char name[40],jname[40],dosn[40],aa[40];
  int a,j;
  long i;
  system("dir /b | find \"txt\" > ql.yylogo");
  fp=fopen("ql.yylogo","rt");
  while(!feof(fp)){
    fscanf(fp,"%s",jname);
    strcpy(name,jname);
    j=strlen(name);
    for(a=0;a<j;a++)
      if(a>=j-4)
        name[a]='\0';
    in=fopen(jname,"rt");
    strcpy(dosn,"md ");
    strcat(dosn,name);
    system(dosn);
    a=1;
    while(!feof(in)){
      sprintf(aa,"%s\\%d.txt",name,a);
      ot=fopen(aa,"wt");
      for(i=1;i<=39999L;i++){
        if(feof(in))
          break;
        fputc(fgetc(in),ot);
      }
      fclose(ot);
      a++;
    }
  }
  fclose(fp);
  system("del ql.yylogo");
}

TOP

13楼的代码测试不能通过,没有效果,提示:环境变量paixu,没有定义。

TOP

问题出在这,程序不能自己建立一个与文件同名的文件夹,需要手动建立,再测试,就有效果了,而且有了标点符号做最后的结尾,看到了,不过是人为添加的标点符号。。。
谢谢了。

TOP

18楼的,我不得不说
姚明啊,高,你实在是高。
没有第三方软件,你的程序在任何位置都可以运行出我想要的实际效果。
但为什么某些拆分的txt略大于100k呢,有101k的,有102k的,能解释一下吗?

[ 本帖最后由 yylogo 于 2008-10-9 09:46 编辑 ]

TOP

回复 21楼 的帖子

文本格式为txt的小说。切分小说我想最好以一个正规标点符号结束,可能会有e文小说,所以我说:“以中文句号、英文句号或中英文问号结束每一章”
我希望你说的“可能还可以写出更高效的代码。”
谢谢!

TOP

尘土飞扬,你好像好没有完全理解我的意思。
也许我没有表达清楚,我再理一理:
我要将一篇较大的小说切分为若干个不大于100k的小章节,每个被切分的txt文档的最末尾要以一个句号结束。

TOP

再次测试

原帖由 namejm 于 2008-10-9 21:50 发表
  如果需要只需要切分为100K左右的小章节倒还好办,但是,要保证每个文档的末尾要以一个句号结束,则就很有难度了,除非每行都是以句号结尾,否则,纯批处理的效率将十分低下。18楼的代码仅能实现小章节在100K左右 ...

再次测试一个2.22m的文件,发现18楼的不仅可以以一个标点符号结束,而且结束的地方恰好是原文章的一个段落的结束,比我想的还要好。标点符号包括句号、分号、引号和省略号。
尘土飞扬先生,你再仔细看看他的代码,并测试一个较大的txt文档,你会发现他的效果很好,2.22m的文件切分时间是35秒,txt文档再大也大不了多少了,我这里的txt小说最大的也不过5m左右。所以,我觉得18楼的最好,没有第三方软件,代码也简洁。
只有一点美中不足,有几个切分的txt为101k,超出题目要求,(但并不影响我的实际要求),他说“你可以修改102400这个数来控制文件大小”,可我不会,你能就18楼的代码完美一下吗?控制住切分的txt不超出100k。

TOP

回复 29楼 的帖子

700m的txt的文件,o my god,我的双核cpu,2g内存,肯定是打不开的,100%肯定,那不成了屎壳螂,加那么大干吗?
话又说回来,真要看你说的这么大的txt,还真必须要使用我们在这探讨的切分问题(不知警察有没有)。所以,18楼的效率还真是个问题。(我使用就那么大-不超过10m,不存在问题)
我在12楼贴的c代码,切分2.22m的txt,不到1秒钟。不过,就是一刀切,每一篇40k,不大不小,不管结尾有没有标点符号。是不是说,在这个问题上,c比bat强呢。如果让那段c代码寻找结尾的标点符号,会不会也出现效率的问题呢?
不好意思,我只会问问题,不会写。

TOP

回复 31楼 的帖子

测试了你31楼的代码,效果相当的完美,没有一个文件超过100k,所有的文件都是以段落结尾。而且,切分的效率非常高,2.23m的文档,不到2秒钟。
但在我查找文章前后连贯的时候,发现了一个致命的缺陷,我想,这是所有人都始料未及的,那就是从切分的第二个文件开始,每篇文章的第一二段出现了或多或少的乱码。
这个问题是不是第三方软件的bug造成的呢?你们试一试吧。我将一个2.23m的txt小说上传到了论坛2号群空间共享里面,标题是:切分代码试验文档.txt
第三方看样子靠不住,和第三者插足一样,不要太相信了,是不是可以解剖一下第三方软件的源代码呢。

TOP

随风,你好!昨晚没有睡吧,06点06分还在修改帖子,辛苦了。
测试了你的代码,本机35秒左右,还可以,其他的要求也能达到,但我发现切分的第二个txt文档是101k,其他都是100k,最后的那一个除外。第二个txt文档是101k,这是怎么回事呢?纯代码讨论,其实也不影响我的使用。
不知大家烦不烦我,这个帖子费了很多朋友的时间和精力,还可能有其他的修正代码的出现,
希望此贴能开拓各位解决问题的思路和注意细节的习惯。
不知何时可以结贴,希望还晚一点,期待更多的优秀帖子出现。

[ 本帖最后由 yylogo 于 2008-10-10 11:33 编辑 ]

TOP

返回列表