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

回复 1# toyerspollors
不需要用什么文本分割器,直接批就可以啊:
  1. @echo off
  2. set n=false
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%a in (歌手.txt) do (
  5. set "str=%%a"
  6. for /f %%b in ("%%a") do echo %%b|findstr /be "[0-9][0-9]*">nul&&set n=true&&set "filename=!str: =!.txt"&&echo %%a>>!filename!||if !n!==true echo %%a>>!filename!
  7. )
  8. pause
复制代码

TOP

回复 12# toyerspollors
未测试,自己试试看看还有什么问题:
  1. @echo off
  2. set n=false
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%a in (歌手.txt) do (
  5. for /f "tokens=1* delims=  " %%b in ("%%a") do echo %%b|findstr /be "[0-9][0-9]*">nul&&set n=true&&set "filename=%%b %%c.txt"&&echo %%a>>!filename!||if !n!==true echo %%a>>!filename!
  6. )
  7. pause
复制代码

TOP

回复 10# toyerspollors
第一种情况修改13楼代码:findstr /r "^第.*章$">nul试试。第二种自己琢磨。

TOP

实际上10楼第二种可以写一个非精确的代码,只是写出来太难看了,不好意思拿出来,还是期待高手吧。

TOP

本帖最后由 qixiaobin0715 于 2021-1-11 22:39 编辑

对自己的代码还不是太满意,速度慢效率低。还是等高手出来解决吧。
楼主能不能发一个完整的样本,不要节选的,便于测试。

TOP

本帖最后由 qixiaobin0715 于 2021-1-12 22:50 编辑

这样直接分割文件效率高一点(适合顶楼的情况):
  1. @echo off
  2. set n=0
  3. setlocal enabledelayedexpansion
  4. for /f "tokens=1,2* delims=: " %%a in ('findstr /r /n /c:"^ *[0-9][0-9]* " 歌手.txt') do (
  5.     set /a n+=1
  6.     set str=%%a
  7.     set /a _!n!=!str: =!
  8.     set "#!n!=%%b %%c"
  9. )
  10. set /a k=%_1%-1
  11. set m=1
  12. for /f "skip=%k% tokens=1* delims=:" %%i in ('findstr /n ".*" 歌手.txt') do (
  13.     set /a x=_!m!
  14.     if !x!==%%i (
  15.         for %%d in (#!m!) do set "filename=!%%d!.txt"
  16.         echo,%%j>>!filename!
  17.         set /a m+=1
  18.     ) else (
  19.         echo,%%j>>!filename!
  20.     )
  21. )
  22. pause
复制代码

TOP

回复 23# toyerspollors
22楼代码已修改,可以解决分割标题前置空格问题。你提的条件越多效率就会下降的越多,建议用文本编辑器统一下格式,将全角空格替换为半角空格,再处理。

TOP

本帖最后由 qixiaobin0715 于 2021-1-13 09:01 编辑

确实像楼上老大所说的那样。其实处理文本不是批处理的强项,并且到处是雷。其它功能有时倒是挺方便。编辑文本文件还不如使用文本编辑器Notepad++、EE等,效率又高又容易操控。比如像本帖,用文本编辑器用一个简单的正则表达式就能解决问题:
打开替换选项卡——勾选使用正则表达式——搜索项填入:
  1. ^\s*([0-9一二三四五六七八九零十百第章]+[  ])
复制代码
或更精确一点:
  1. ^\s*(([0-9]+|第?[一二三四五六七八九零十百]+章?)[  ])
复制代码
替换项填入:
  1. @@\1
复制代码
点击替换全部即可

TOP

返回列表