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

[文本处理] 求一个文本分割的批处理

有如下的一个1.txt文本


[2009-9-21 16:14:12]
在建立与服务器的连接时出错用( ...请教:如何。服务器的连接
[2009-9-21 16:39:17]
是变t 命令数的高效另类应用( ...请教:如何利用(服务器的连接如何利用(服
[2009-9-21 16:14:21]
在建立与服务器的连接时出错用( ...请教:如何。服务器的连接
[2009-9-21 16:39:32]
是变t 命令数的高效另类应用( ...请教:如何利用(命令数的高效另类应用( ...请教


现在希望能根据时间为标专把这个文本分成四个文本,就是第一个文本中内容是:
在建立与
服务器的连接时出错用请教:如何。服务器的连接

这样的形式,如果这个文本的名能用新文本的第一行作文件名那最好不过了.

回复 18楼 的帖子

那我就不知道为什么了,我已经按空格测试过了,在我机器上两个代码都没有问题。可能是你原始文本有出入吧。祝好运。
Still with wax

TOP

我是以一楼附件为蓝本测试的,就是这个:

1.txt(Unicode)(注意:时间后为一个 “]” 加一个 “ ” 空格。)
  1. [2009-9-22 11:01:55]
  2. ewf
  3. sadfasdfasdfasdfasdfa
  4. [2009-9-22 11:01:59]
  5. adfa
  6. sdfasdfasdfasdfa
  7. [2009-9-22 11:02:02]
  8. ewfv
  9. sadfasdfasdfasdfasdf
  10. [2009-9-22 11:02:06]
  11. dfa
  12. sdfasdfasdfasdfa
复制代码
每个时间行后面都有一空格,是不是这样呢?
======================
这里测试能生成四个文件,空行会被剔除,可兼容特殊符号。
但如果作为文件名的第一行含有不能做文件名的特殊符号时就会出错。
不知道楼主是用哪个测试的!

[ 本帖最后由 wxcute 于 2009-9-23 23:05 编辑 ]
批处理之家论坛官方 QQ 群 :【当前人数/人数上限】【2009-07-08】
群①:43011867(181/200);群②:(暂缺数据);群③:66165582(120/200)。

TOP

第二个代码测试还是出现了老问题

第二个代码测试了还是出现了找不到temp.txt文件,需改进

TOP

回复 16楼 的帖子

我的第二个代码就没有问题,只是你没有测试而已。
Still with wax

TOP

11楼的分割出来了前三段

11楼的分割出来了前三段,完全正确了,但是能不能把所有的段都分割出来呢?

TOP

高手们快要成功了,

我试了一下11楼的快要成功了,不过就只生成了四个文件,只分割出来了三个,7楼的把文件名都分割出来了,但是文本文件中没有具体的内容,有没有结合了这两个的呢,对于时间加不加上在前面都行的,

TOP

回复 13楼 的帖子

不是的,你们看到的事修改后的帖子,我敢肯定我看到的楼主的意思就是时间也写入。他的帖子出来的时候我刚好在线。写不写是小事,关键是文件名的命名。
Still with wax

TOP

回复 12楼 的帖子

楼主的意思,不要把“【日期时间】”写到文件中,以【日期时间】下一行作为为文件名。
(*^_^*)

TOP

回复 9楼 的帖子

不是吧,我看过他图片,但是没怎么看懂。我只是根据他顶楼的描述理解的。我自己测试过没有问题。但是用terse兄的代码测试似乎是以非中括号行作为文本文件名的。
Still with wax

TOP

很久没写代码了,看下行不行

  1. @echo off
  2. for /f "delims=" %%t in ('type 1.txt')do (
  3.  call :PD "%%t"
  4.  setlocal enabledelayedexpansion
  5.  for /f "tokens=1*" %%i in ("!FN!.txt "%%t"")do (
  6.  endlocal
  7.   if defined FN >>%%i echo+%%t
  8.  )
  9. )
  10. goto :eof
  11. :PD
  12.  set "s=%~1"
  13.  if not defined s (set FN=&goto :eof)
  14.  if "%s:~,1%%s:~-2,1%"=="[]" (set FN=)else (
  15.   if not defined FN set FN=%~1
  16.  )
复制代码
批处理之家论坛官方 QQ 群 :【当前人数/人数上限】【2009-07-08】
群①:43011867(181/200);群②:(暂缺数据);群③:66165582(120/200)。

TOP

  请楼主节约论坛资源,对图片尽可能地压缩,压缩教程请看这个帖子:http://bbs.bathome.net/thread-4673-1-1.html。已经把5楼的图片压缩后重新上传。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

回复 8楼 的帖子

Lumiere兄,看来是没有看楼主的附件。楼主的意思就是7楼terse兄的代码。
(*^_^*)

TOP

回复 7楼 的帖子

terse兄的代码不能满足楼主要求喔。
Still with wax

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('type "1.txt"') do (
  3.      if "%%i" lss "a" (set flag=i&set name=) else (
  4.         if defined flag (
  5.            if defined name (>>!name!.txt echo %%i) else (
  6.            >%%i.txt echo %%i
  7.            set name=%%i
  8.           )
  9.         )
  10.       )
  11.     )
  12. pause
复制代码

TOP

返回列表