标题: [其他] [已解决]批处理如何只取文件的最后2行? [打印本页]
作者: qq506657335 时间: 2010-9-20 10:08 标题: [已解决]批处理如何只取文件的最后2行?
求最简便的方法
谢了。。大家。。
[ 本帖最后由 qq506657335 于 2010-9-20 19:33 编辑 ]
作者: 随风 时间: 2010-9-20 10:28
- @echo off & setlocal enabledelayedexpansion
- for /f "delims=" %%a in (a.txt) do (
- set str=!num!
- set num=%%a
- )
- echo !str!
- echo !num!
- pause
复制代码
作者: batman 时间: 2010-9-20 10:33
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in (a.txt) do set /a n+=1&set ".!n!=%%a"
- set /a m=n-1
- echo !.%m%!&echo !.%n%!
- pause>nul
复制代码
-----------------------------------------------------------------------------
二楼才是最简单的方法,我思路定向了。
[ 本帖最后由 batman 于 2010-9-20 10:36 编辑 ]
作者: bat_521 时间: 2010-9-20 19:04 标题: 回复 2楼 的帖子
随风大哥,能解释一下,为何只显示后2行吗?- set str=!num!
- set num=%%a
复制代码
set str=!num! 这个的作用是什么?
作者: bluewing009 时间: 2010-9-20 19:09
findstr打印刚号如何?
作者: qq506657335 时间: 2010-9-20 19:33 标题: 回复 4楼 的帖子
set str=!num!
set num=%%a
假设下,如果只循环一次,那此时str就没有值,而num=%%a(第一行)
如果2次
那str=%%a(第一行)
num=另一个%%a(第二行)
这个方法的确很强大。。。
作者: wc726842270 时间: 2010-9-20 20:11
方法真是超强啊,看了以后我都不一定想到
作者: Batcher 时间: 2010-9-20 21:01 标题: 回复 2楼 的帖子
没有考虑以下特殊情况:
1、文件只有1行
2、最后两行是on、off等
3、最后两行包括感叹号
作者: CUer 时间: 2010-9-20 21:27
复制代码
作者: CUer 时间: 2010-9-20 21:30
- gawk "{y=x \"\n\" $0;x=$0}END{print y}" a.txt
复制代码
作者: Batcher 时间: 2010-9-20 22:13
- @echo off
- set "FileName=C:\test\1.txt"
- for /f %%a in ('type "%FileName%" ^| find /c /v ""') do (
- set "RowNum=%%a"
- )
- set /a RowDst=RowNum-2
- if %RowDst% lss 0 (
- type "%FileName%"
- ) else (
- more +%RowDst% "%FileName%"
- )
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |