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

[文本处理] 批处理如何将文本内指定的信息内容导出来?

各位好!
     本机有一些文件!内容如下!
     如1.txt 的内容:
  1. ------------------------------------------------------------------------
  2. r865 | zhaoxiang | 2012-09-22 16:55:51 +0800 (星期六, 2012-09-22) | 2 行
  3. 已审核
  4. QC:11905
  5. ------------------------------------------------------------------------
复制代码
2.txt的内容是:
  1. ------------------------------------------------------------------------
  2. r705 | tangsz | 2012-09-21 11:23:35 +0800 (星期五, 2012-09-21) | 1 行
  3. 已审核 qc:10613
  4. ------------------------------------------------------------------------
复制代码
我现在想把其中从已审核开始的那一行,也就是第四行的内容开始一直到最后一行之前的内容导出来单独输出!请问怎么实现啊
比如1.txt  我想输出:
已审核
QC:11905

2.txt我想输出:
已审核 qc:10613

请各位帮忙!

保存为bat,与需要修改的文件放在同一位置,修改后的文件在New文件夹里,试试
  1. @echo off
  2. md New 2>nul
  3. for /f "delims=" %%a in ('dir /a-d /b *.txt') do (
  4.   setlocal enabledelayedexpansion
  5.   (for /f "usebackq delims=" %%b in ("%%a") do (
  6.     set "str1=!str2!"
  7.     set "str2=%%b"
  8.     if "!str1:~,3!"=="已审核" set flag=1
  9.     if defined flag echo !str1!
  10.   ))>"New\%%a"
  11.   endlocal
  12. )
复制代码

TOP

  1. @echo off
复制代码

TOP

  1. for %%a in (*.txt) do more +3 %%a >_%%a
复制代码

TOP

本帖最后由 saogz 于 2012-9-24 14:38 编辑

您好!
    其实文本文件第三行的内容不一定是“已审核” 开头
    我其实是想从第三行开始读取数据,而第三行不一定是已审核三个字开头

TOP

  1. @echo off
  2. md New 2>nul
  3. for /f "delims=" %%a in ('dir /a-d /b *.txt') do (
  4.   setlocal enabledelayedexpansion
  5.   (for /f "skip=3 usebackq delims=" %%b in ("%%a") do (
  6.     if defined a echo,!a!
  7.     set "a=%%b"
  8.   ))>"New\%%a"
  9.   endlocal
  10. )
复制代码

TOP

用第三方工具sed:
  1. @echo off
  2. for %%a in (*.txt) do sed -n "H;${g;s/^.*\(已审核\)/\1/;p}" "%%a"
  3. pause
复制代码
或用此代码保存为 test.vbs:
  1. Set fso = CreateObject("SCripting.FileSystemObject")
  2. For Each file In fso.GetFolder(".").Files
  3. If LCase(fso.GetExtensionName(file))="txt" Then
  4. text = fso.OpenTextFile(file,1).ReadAll
  5. WScript.Echo Right(text,Len(text)-InStr(text,"已审核"))
  6. End If
  7. Next
复制代码

TOP

本帖最后由 terse 于 2012-9-24 22:11 编辑

据五楼回复猜测 ”已审核“ 仅作误导 本意只是第三行开始  那样的话就看4楼代码  还是指含有”已审核“文本 第三行开始读取?

TOP

楼主表述不清,一会第四行、一会又是第三行。很难让人猜测。
姑且认为是从第四行开始,到倒数第二行结束。

TOP

回复 7# CrLf


    老师,请问你这个VBS怎么把弹窗的内容重定向到文本文件tt.txt里?谢谢!

TOP

回复 7# CrLf


    VBS文件只找T.TXT文件,再把弹窗的内容重定向到TT.TXT里,怎么改?谢谢!

TOP

返回列表