标题: [文本处理] 批处理怎么实现按指定符号分割TXT文本呢? [打印本页]
作者: chuan31 时间: 2011-1-16 21:33 标题: 批处理怎么实现按指定符号分割TXT文本呢?
如题,就是当前目录下有一个TXT文本 我想把这个TXT文本按指定符号分割,比如按句号。分割后的文件单独存为独立的一个TXT于当前目录。请会的老大帮忙写个代码,最好是相对路劲的 就是不用指定要分割的文件的绝对路劲
作者: skuny 时间: 2011-1-16 21:44
一行中有很多句号?
你要前面还是后面?
你想怎么分割?
作者: chuan31 时间: 2011-1-16 21:58
假如这个TXT里面有20个句号 就分为20份 有多少句号就分为多少单独的文件
作者: 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 /f "delims=" %%a in (temp.h) do (
- set/a a+=1
- >"%n%_!a!.txt" echo %%a
- )
- del temp.h
复制代码
作者: yhcbird 时间: 2011-1-16 22:33
应该用纯批可以办到的吧。。先睡觉。。。。
作者: 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
- set var=!var:*:=!
- if "!var!" neq "" (
- if "!var:%分隔符%=!" neq "!var!" (
- set var=!var:?=?!
- set var=!var:"=”!
- for %%b in ("!var:%分隔符%=" "!") do (
- >.tmp echo !n!
- EndLocal
- set var=%%~b
- set /a n += 1
- set /p m=<.tmp
- SetLocal EnableDelayedExpansion
- set var=!var:?=?!
- >>"!文本:~0,-4!_!m!.txt" echo,!var:”="!
- )
- ) else >>"!文本:~0,-4!_!n!.txt" echo,!var!
- ) else >>"!文本:~0,-4!_!n!.txt" echo,!var!
- EndLocal
- )
-
- del .tmp
复制代码
[ 本帖最后由 tmplinshi 于 2011-1-16 23:00 编辑 ]
作者: chuan31 时间: 2011-1-19 12:53
原帖由 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 编辑 ]
作者: chuan31 时间: 2011-1-19 12:57
版主 你的代码这次运行了生成一个文件 不过里面的内容还是没有分开,如果分开的话应该要生成很多独立的文件才对。期待老大修改下这个精悍的代码。
作者: tmplinshi 时间: 2011-1-19 13:38
- @echo off
- set "分隔符=。"
-
- for /f "delims=" %%a in ('dir /a:-d /b *.txt') do (
- findstr /n .* "%%a" >.tmp
- set fname=%%~na
- set fext=%%~xa
- set n=1
- for /f "delims=" %%a in (.tmp) do (
- set var=%%a
- SetLocal EnableDelayedExpansion
- set var=!var:*:=!
- if "!var!" neq "" (
- if "!var:%分隔符%=!" neq "!var!" (
- set var=!var:?=?!
- set var=!var:"=”!
- for %%b in ("!var:%分隔符%=%分隔符%" "!") do (
- if %%b neq "" (
- >.tmp echo !n!
- EndLocal
- set var=%%~b
- set /a n += 1
- set /p m=<.tmp
- SetLocal EnableDelayedExpansion
- set var=!var:?=?!
- >>"!fname!_!m!!fext!" echo,!var:”="!
- )
- )
- ) else >>"!fname!_!n!!fext!" echo,!var!
- ) else >>"!fname!_!n!!fext!" echo,!var!
- EndLocal
- )
- )
-
- del .tmp
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |