Board logo

标题: [文本处理] 批处理怎样给多个文本中标题前添加序号? [打印本页]

作者: 凯继堂主    时间: 2011-4-9 08:49     标题: 批处理怎样给多个文本中标题前添加序号?

大家好!哪位朋友能帮我一下?给我写个批处理或者修改这两个批处理.我这里有上百个文本文件,其文件名是按序号排列的,我想把文件名的序号添加到文本中的标题前,和标题在同一行.zm900612 这位朋友帮我写了一个批处理,但是处理完一个文件后就退出了,我想批量完成当前文件夹中所有的文本文件;我还搜集了一个批处理,可将文件名序号添加到文本中,可是序号和标题不在一行,序号在第一行,原来的标题在第二行.我想把序号和标题放在同一行的目的是便于提取文件标题使用,我这里有个批处理,可批量提取文本中第一行作为文件名,如果文件名只有标题没有序号查看起来杂乱无章.我把这两个批处理代码帖上来,请帮我修改一下或者提供一个批量合并文本中第一二行的批处理.期待回帖,非常感谢!
  zm900612 这位朋友帮我写的批处理代码:
  1. @echo off
  2. for /f "tokens=1*" %%a in ('dir /a-d /b *.txt') do (
  3.     (set /p=%%a<nul
  4.     type "%%a %%b"
  5.     )>"%%b.txt"
  6. )
  7. del /f /q "* *.txt"
复制代码
处理完一个文件后就退出了,不能完成当前文件夹中所有的文本文件,处理后的新文件没有名称,只有扩展名,可能是避免重复而自动中指程序的吧;
  可添加序号但和标题不在一行的批处理代码:
  1. @echo off
  2. set/a n=1000
  3. for %%a in (*.txt) do (
  4.     for /f "delims=" %%b in ('findstr/n ".*" "%%~a"') do (
  5.         set "str=%%b"&setlocal enabledelayedexpansion
  6.         set "str=!str:*:=!"
  7.         if not defined flag (>%%a echo %%~na&>>%%a echo/!str!) else (>>%%a echo/!str!)
  8.         endlocal&set flag=a
  9.      )
  10.      set "flag="&call :_ren "%%a"
  11. )
  12. pause&exit
  13. ::重命名
  14. :_ren
  15. set/a n+=1
  16. if not exist %n:~1%.txt (ren %1 "%n:~1%.txt") else goto _ren
复制代码
,能否修改一下,让添加序号时和原来文本中的标题在同一行.
  期待朋友们的赐教,同时感谢zm900612 的提供,管理员叫我重新更新,不知是不是这样编辑,有不当之处望能指出,谢谢!
作者: CrLf    时间: 2011-4-9 09:34

本帖最后由 zm900612 于 2011-4-9 09:35 编辑
  1. @echo off
  2. for /f "tokens=1*" %%a in ('dir /a-d /b *.txt') do (
  3.     (set /p=%%a<nul
  4.     type "%%a %%b"
  5.     )>"%%b.txt"
  6. )
  7. del /f /q "* *.txt"
复制代码
顺便说下,楼主标题违规,代码没加code,更要命的是表述不清,我也不知道有没把你的意思理解对
作者: hfg1977    时间: 2011-4-9 15:40

lz估计是想把下载的单个长txt书,按章节分割.
我以前写过类似的P. 长txt书,按章节分割后再制作成CHM类型的电子书.
::说明:使用流程:①首先用"TXT杀手最终版本.exe"把原始文件分割,章节名0(*);
::②再根据原始文件生成目录文件menulist.txt;        [可忽略]
::③再根据menulist.txt修改分割后的文件第一行;        [可忽略]
::④再根据分割后的文件第一行生成htm索引文件和CHM索引文件;
::⑤最后根据CHM索引文件 生成CHM文件;
::第②③步骤的作用:章节名称 格式标准化 [可忽略]
code ......


合并文本中第一二行:
  1. sed "1,2N;s/\n/\t/" file 只合并第一行和第二行
复制代码

作者: 凯继堂主    时间: 2011-4-10 01:20

感谢您的回帖,我刚注册,不懂规矩,见笑了.您写的批处理正是我需要的,我的意思是在原有标题前添加序号,序号和标题在同一行,您能否再修改一下批处理,由于修改后的新文本文件没有名称 只有扩展名,只处理一个文件后就退出了,希望能够批量完成当前文件夹中的所有文本文件.我不是想制作电子书,是想便于在手机上阅读,不必打开文本就能看到标题,而且能保持原有的顺序.我之前搜集了个批处理,可将文本第一行提取作为文件名,但是没有序号,原有的顺序打乱了,阅读起来很不方便.再次感谢您,并期待帮助!
作者: 凯继堂主    时间: 2011-4-10 01:26

3# hfg1977


感谢您的回复,我又学到了新的东西!
作者: Batcher    时间: 2011-4-10 12:28

4# 凯继堂主


请把所有的问题背景描述全部更新到顶楼
作者: CrLf    时间: 2011-4-11 20:11

为什么我机子上运行3楼代码失败呢?是系统问题还是传说中的人品...
作者: Batcher    时间: 2011-4-11 20:13

7# zm900612


具体怎么失败?
作者: 凯继堂主    时间: 2011-4-13 10:39

8# Batcher

自己顶一下,期待帮助,非常感谢!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2