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

[文本处理] 【练习】批处理显示文本中8字节的行

在百度贴吧看到一题,出给大家练练手。
那儿有一仙说他们老大不加思索就作出来了,(本人足足想了10分钟才有完整思路)实在对这位老大佩服的很,可惜未见到代码 (^_^)
题:
要求显示a.txt中8字节的行,注意有特殊字符 ^%&<!>等。
增加要求为:不创建临时文件,不使用第三方工具。
注意:说的是字节而不是字符,需考虑到多种情况,比如冒号、分号开头的行。。。




.
技术问题请到论坛发帖求助!

回复 4楼 的帖子

先忽略8个字符以上的行,再逐字判断,不错,但若需显示的行不是8字节而是更大点的数,效率会同时降低,且未考虑分号开头的行和含全角空格的行。
先加5分,后面的继续。。。

[ 本帖最后由 随风 于 2009-6-10 19:19 编辑 ]
技术问题请到论坛发帖求助!

TOP

回复 6楼 的帖子

全角空格呢?   (^_^)
技术问题请到论坛发帖求助!

TOP

回复 8楼 的帖子

效率是够低的,也每考虑分号开头的行 (^_^)
技术问题请到论坛发帖求助!

TOP

回复 12楼 的帖子

zqz 真是一语点醒梦中人,代码早以写好,就是解决不了最后一行没有回车的问题。老是用type
最终大家的思路都到一起来了 (^_^)
代码如下:
  1. @echo off&set /a h=0
  2. for /f "delims=" %%a in ('^(more %~s0^&echo.^)^|findstr /o .*') do (
  3.    for /f "delims=:" %%i in ("%%a") do set /a n=%%i-2-h,h=%%i
  4.    setlocal enabledelayedexpansion
  5.    if !N! equ 8 echo;【!var:*:=!】
  6.    endlocal
  7.    set "var=%%a"
  8. )
  9. pause&exit
  10. 下面是分号开头的行
  11. ;1234567
  12. 下面是8个空格
  13.         
  14. 下面是冒号开头的行
  15. ::::::::
  16. 下面是特殊字符的行
  17. %^&*<">!
  18. 下面是含全角空格的行
  19.    78
  20. 下面是全角半角混合的行
  21. 壹23肆78
  22. 下面是纯半角字符的行
  23. 12345678
复制代码
技术问题请到论坛发帖求助!

TOP

回复 17楼 的帖子

这样会忽略冒号开头的行吧。
技术问题请到论坛发帖求助!

TOP

回复 23楼 的帖子

看22楼的意思应该是自己编写的exe文件,这不应该说算,应该说很牛啊。
技术问题请到论坛发帖求助!

TOP

狂汗,居然如此简单。。。
:
  1. @echo off
  2. (more a.txt&echo.)|findstr /x ........
  3. pause
复制代码
2

评分人数

    • netbenton: 如此。。。真的汉啊!PB + 10
    • keen: 这都可以,牛叉!PB + 5
技术问题请到论坛发帖求助!

TOP

返回列表