Board logo

标题: 把内容上有一定规律性的较大的文本分成多个小文本? [打印本页]

作者: zzhh612     时间: 2007-3-29 08:25    标题: 把内容上有一定规律性的较大的文本分成多个小文本?
我有一个较大的文本如下: //@函数名称: abs //函数原型: int abs(int x); //函数功能: 求整数x的绝对值 //函数返回: 计算结果 //参数说明: //所属文件: <math.h>,<stdlib.h> //使用范例: #include <stdio.h> #include <math.h> int main() { int number=-1234; printf("number: %d absolute value: %d",number,abs(number)); return 0; } //@函数名称: fabs //函数原型: double fabs(double x); //函数功能: 求x的绝对值. //函数返回: 计算结果 //参数说明: //所属文件: <math.h> //使用范例: #include <stdio.h> #include <math.h> int main() { float number=-1234.0; printf("number: %f absolute value: %f",number,fabs(number)); return 0; } //@函数名称: sin //函数原型: double sin(double x); //函数功能: 计算sinx的值.正弦函数 //函数返回: 计算结果 //参数说明: 单位为弧度 //所属文件: <math.h> //使用范例: #include <stdio.h> #include <math.h> int main() { double result,x=0.5; result=sin(x); printf("The sin() of %lf is %lf",x,result); return 0; } ......... 我想要以"//@函数名称"之前为界,将一个个C语言的函数说明分成单独的以函数名为文件名的文本文件, 因数量较多,想用批处理完成,但不知如何着手,望高手指点? [ Last edited by zzhh612 on 2007-3-29 at 09:49 AM ]

作者: jmz573515     时间: 2007-3-29 12:01
On Error Resume Next
set fso=createobject("scripting.filesystemobject")
set file=fso.opentextfile("a.txt",1)
if err.number<>0 then 
  err.clear
  msgbox "对不起,没有找到a.txt文件!",4096,"错误"
  wscript.quit
end if
do while file.AtEndOfStream <> True
m=file.readline
if left(m,7)="//@函数名称" then
set cfile=fso.createtextfile(trim(mid(m,9)) & ".txt",true)
end if
cfile.writeline m
loop
file.close
msgbox "文件分割完成!",4096,"提示"

作者: zzhh612     时间: 2007-3-29 14:54
楼上的VBScript功力不错,我试了下,还可以,不知这种事DOS的批处理能完成吗.DOS要基础一些,我是想在运用中得到学习.谢了. [ Last edited by zzhh612 on 2007-3-29 at 03:03 PM ]

作者: ccwan     时间: 2007-3-29 23:52
@echo off&setlocal enabledelayedexpansion
for /f "tokens=1*" %%i in (test.txt) do (
    set var=%%i
    set str=%%j
    if "!var:~3,4!"=="函数名称" (set lxm=%%j&>>!lxm!.txt echo !var! !str!
    ) else (
    >>!lxm!.txt echo !var! !str!
    )
)
格式略有变化,主要是空格。

作者: ccwan     时间: 2007-3-30 03:01
代9527兄发出他写的代码,非常符合楼主要的代码格式。
@echo off&setlocal enabledelayedexpansion
for /f "tokens=1* delims=@" %%a in (test.txt) do (
    if "%%a" equ "//" (
    call:P "%%b"
    ) else (
    >>!a! echo %%a%%b
    )
)
goto:eof

:P
for /f "tokens=1* delims=: " %%x in (%1) do set a=%%y.txt&>>!a! echo %%a%%b
goto:eof 

作者: zzhh612     时间: 2007-3-30 10:01    标题: ccwan老兄代发的代码也不错,满意.
jmz573515的代码和ccwan老兄代发的代码达到了相同的效果. 真是异曲同工.看来我要学的路还长,"路漫漫其修远兮,吾将上下而求索...