找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 19992|回复: 8

[文本处理] 批处理怎么实现按指定符号分割TXT文本呢?

[复制链接]
发表于 2011-1-16 21:33:41 | 显示全部楼层 |阅读模式
如题,就是当前目录下有一个TXT文本 我想把这个TXT文本按指定符号分割,比如按句号。分割后的文件单独存为独立的一个TXT于当前目录。请会的老大帮忙写个代码,最好是相对路劲的 就是不用指定要分割的文件的绝对路劲
发表于 2011-1-16 21:44:09 | 显示全部楼层
一行中有很多句号?

你要前面还是后面?

你想怎么分割?
 楼主| 发表于 2011-1-16 21:58:29 | 显示全部楼层
假如这个TXT里面有20个句号 就分为20份 有多少句号就分为多少单独的文件
发表于 2011-1-16 22:25:56 | 显示全部楼层
fr.exe:http://ishare.iask.sina.com.cn/f/7088512.html
  1. @echo off&setlocal enableDelayedExpansion
  2. for %%a in (*.txt) do set n=%%~na
  3. copy "%n%.txt" temp.h>nul
  4. fr.exe temp.h /ric:"。" /t:"。\r\n"
  5. for /f "delims=" %%a in (temp.h) do (
  6.         set/a a+=1
  7.         >"%n%_!a!.txt" echo %%a
  8. )
  9. del temp.h
复制代码
发表于 2011-1-16 22:33:47 | 显示全部楼层
应该用纯批可以办到的吧。。先睡觉。。。。
发表于 2011-1-16 22:52:59 | 显示全部楼层
文本中不能含有 * 号
  1. @echo off
  2. set "文本=1.txt"
  3. set "分隔符=。"

  4. findstr /n .* "%文本%" >.tmp
  5. set n=1
  6. for /f "delims=" %%a in (.tmp) do (
  7.     set var=%%a
  8.     SetLocal EnableDelayedExpansion
  9.     set var=!var:*:=!
  10.     if "!var!" neq "" (
  11.         if "!var:%分隔符%=!" neq "!var!" (
  12.             set var=!var:?=?!
  13.             set var=!var:"=”!
  14.             for %%b in ("!var:%分隔符%=" "!") do (
  15.                 >.tmp echo !n!
  16.                 EndLocal
  17.                 set var=%%~b
  18.                 set /a n += 1
  19.                 set /p m=<.tmp
  20.                 SetLocal EnableDelayedExpansion
  21.                 set var=!var:?=?!
  22.                 >>"!文本:~0,-4!_!m!.txt" echo,!var:”="!
  23.             )
  24.         ) else >>"!文本:~0,-4!_!n!.txt" echo,!var!
  25.     ) else >>"!文本:~0,-4!_!n!.txt" echo,!var!
  26.     EndLocal
  27. )

  28. del .tmp
复制代码

[ 本帖最后由 tmplinshi 于 2011-1-16 23:00 编辑 ]
 楼主| 发表于 2011-1-19 12:53:11 | 显示全部楼层
原帖由 tmplinshi 于 2011-1-16 22:52 发表
文本中不能含有 * 号@echo off
set "文本=1.txt"
set "分隔符=。"

findstr /n .* "%文本%" >.tmp
set n=1
for /f "delims=" %%a in (.tmp) do (
    set var=%%a
    SetLocal EnableDelayedExpansion
    ...


经测试完全可用 不过有个小小的请求,能不能让输出的文本带有原来他自己的句号呢??现在输出的文本原来结尾的句号没有了。另外要处理的文件路径能做成相对路径吗?只要是当前文件夹下的文件全部处理,而不是指定文件名。

[ 本帖最后由 chuan31 于 2011-1-19 12:55 编辑 ]
 楼主| 发表于 2011-1-19 12:57:25 | 显示全部楼层
原帖由 hanyeguxing 于 2011-1-16 22:25 发表
fr.exe:http://ishare.iask.sina.com.cn/f/7088512.html@echo off&setlocal enableDelayedExpansion
for %%a in (*.txt) do set n=%%~na
copy "%n%.txt" temp.h>nul
fr.exe temp.h /ric:"。" /t:"。\r\n"
for / ...


版主 你的代码这次运行了生成一个文件 不过里面的内容还是没有分开,如果分开的话应该要生成很多独立的文件才对。期待老大修改下这个精悍的代码。
发表于 2011-1-19 13:38:15 | 显示全部楼层
  1. @echo off
  2. set "分隔符=。"

  3. for /f "delims=" %%a in ('dir /a:-d /b *.txt') do (
  4.     findstr /n .* "%%a" >.tmp
  5.     set fname=%%~na
  6.     set fext=%%~xa
  7.     set n=1
  8.     for /f "delims=" %%a in (.tmp) do (
  9.         set var=%%a
  10.         SetLocal EnableDelayedExpansion
  11.         set var=!var:*:=!
  12.         if "!var!" neq "" (
  13.             if "!var:%分隔符%=!" neq "!var!" (
  14.                 set var=!var:?=?!
  15.                 set var=!var:"=”!
  16.                 for %%b in ("!var:%分隔符%=%分隔符%" "!") do (
  17.                     if %%b neq "" (
  18.                         >.tmp echo !n!
  19.                         EndLocal
  20.                         set var=%%~b
  21.                         set /a n += 1
  22.                         set /p m=<.tmp
  23.                         SetLocal EnableDelayedExpansion
  24.                         set var=!var:?=?!
  25.                         >>"!fname!_!m!!fext!" echo,!var:”="!
  26.                     )
  27.                 )
  28.             ) else >>"!fname!_!n!!fext!" echo,!var!
  29.         ) else >>"!fname!_!n!!fext!" echo,!var!
  30.         EndLocal
  31.     )
  32. )

  33. del .tmp
复制代码

评分

参与人数 1技术 +1 收起 理由
chuan31 + 1 代码很好用啊!必须加分!

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 05:09 , Processed in 0.027555 second(s), 11 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表