请问如何用批处理提取多个txt文档倒数的第一行至倒数第十行并以OK.txt保存。谢谢!

请问如何用批处理提取多个txt文档倒数的第一行至倒数第十行并以OK.txt保存。谢谢!
最好能使用以下类似的,方便可以修改行数

set sx=10是倒数第几行(包含倒数此行)set ds2=2是至倒数第几行(包含此行)
@echo off
set sx=10
set ds2=2
setlocal enabledelayedexpansion

'不用那么麻烦的,批处理还算呀搞的,以下代码保存为vbs类型文件
option explicit
dim fso,line,read_file,count,folder,list,ExtensioNname,r_str(),count1,str,list1,save_file
set fso=createobject("scripting.filesystemobject")
folder="."                   '当前文件夹,可以自己指定
ExtensioNname="txt"                 '文件后缀名,可以自己指定
save_file="OK.txt"                 '保存路径,若没有路径只有文件名则会直接创建在当前文件夹内
for each list in fso.getfolder(folder).files          '遍历文件夹
 if fso.getextensionname(list)=ExtensioNname then         '判断后缀名
  read_file=fso.opentextfile(list.path).readall        '读取全文
  count=split(read_file,vbcrlf)            '分配文本
  line=ubound(count)-9 '如果文本只有不到十行,则显示第一行,否则显示倒数第十行
  for list1=line to ubound(count)
  redim preserve r_str(count1) 
  r_str(count1)=count(list1)               '找到的文本存入数组
  count1=count1+1
  next
 end if
next
str=join(r_str,vbcrlf)                '格式化合并数组
fso.createtextfile(save_file).write str            '写入文件
set fso=nothing

追问

您的方法很好,但是,如果文件后有多个空行,运行后会影响结果,请帮忙修正……谢谢!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-18
@echo off&setlocal enabledelayedexpansion
set a=0
for /f %%a in (2.txt) do (
    set /a a+=1
)
if %a% leq 10 (
    more 2.txt
    pause>nul&exit
)
set b=10
set c=20
:start
if %b% gtr 100 pause>nul&exit
if !a! gtr !b! (   
    if !a! leq !c! (
        set /a a=!a!-10
        more +!a! 2.txt
    )
)
set /a b+=10
set /a c+=10
goto start

追问

请帮忙修改下,上面的代码只是2.TXT里的内容显示在CMD里,

我想要的结果是 用批处理提取多个txt文档倒数的第一行至倒数第十行并以OK.txt保存。谢谢!

追答@echo off&setlocal enabledelayedexpansion
for /r %%a in (*.txt) do (
    set m=0
    set fn=%%~na%%~xa
    call :make    
)
echo 输出完毕^^!
pause>nul&exit
:make
for /f "tokens=*" %%a in (!fn!) do (
    set /a m+=1
)
if !m! leq 10 (
    more !fn!>>d:\OK.txt
)else (
    set /a n=!m!-10
    more +!n! !fn!>>d:\OK.txt

echo ----------------------------------->>d:\OK.txt
goto :eof

 

说明一下:

1、按照你的要求读取所有txt最后十行到 OK.TXT

2、为了区分每个十行,我用“echo -----------------------------------” 做了分隔,不喜欢可以手工去掉这段

3、为了避免批处理运行中再次处理刚生成的OK.TXT,建议将OK.txt 输出到另一个目录,我这里直接输出到D盘根目录。。你试试运行一下,我win7测试没问题了。

相似回答