找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22133|回复: 9

[ 新手练习题 4 ]批处理读取文本但不显示注释内容

[复制链接]
发表于 2009-6-8 21:04:01 | 显示全部楼层 |阅读模式
[ 新手练习题 4 ] 读取文本但不显示注释内容
有一文本文件,开头为分号“;”的整行内容为注释,还有双斜杠“//”及其后面的内容为注释。
要如何显示出注释的内容呢?即显示除注释以外的内容。

目的:学习多种字符串处理的方法。

要求:以示例文本为模板,也可自己构造文本。
   方法不限。


评分:代码可读性 1 分;
   首个新方法 7 分,第二个 5 分,依次类推,最少 2 分;
   一人可多种方法,新方法追加 2 分,已经出现过的方法追加 1 分;
   只处理一种注释分数减半。

示例文本
  1. ;这里是注释,只有开头是分号的才是注释,分号在其他位置不是哦!
  2. //这也是注释,一般放在正文后面,当然也可以放在开头。
  3. ;批处理之家新手练功区介绍
  4. 新手练功区为新手提供实战前的测试。
  5. 就像在游戏中打怪,
  6. 新手在这里升级,新手在这里成长。  //新手区宣言
复制代码

[ 本帖最后由 wxcute 于 2009-6-9 21:42 编辑 ]
发表于 2009-6-8 21:11:30 | 显示全部楼层
还有双斜杠“//”及其后面的内容为注释。
...

// 在文本的什么位置呢?应该说明一下吧。
发表于 2009-6-8 23:12:42 | 显示全部楼层

不知道行不行,手机发帖没测试

  1. @echo off
  2. for /f "eol=;" %%i in (test.txt) do (
  3.    echo %%i >>temp.txt
  4.    )
  5. for /f "eol=//" %%j in (temp.txt) do (
  6.    echo %%j
  7. )
  8. del temp.txt
  9. pause>nul&exit
复制代码

[ 本帖最后由 wangshuping42 于 2009-6-8 23:20 编辑 ]

评分

参与人数 1PB +1 收起 理由
wxcute + 1 鼓励一下,但有错误。如 eol 选项只能接受一 ...

查看全部评分

发表于 2009-6-9 10:51:47 | 显示全部楼层
a.txt
  1. 4981 5487 2724 2419 4837 2218 37 19 2880 5521
  2.                            ;9613 7292 7433 554 8287 1147 9516 5678 9760 3028
  3. 9220 5936 3580 6455 8116 9776 6246 1652 6390 6615
  4. 7855 7707 1850 4564 2454 4571 7330 8718 4499 5083
  5. 7683 3076 637 3644 9714 6080 9554 8250 5353 6692
  6. 4036 9590 4539 8156 7648 6738 8834 7033 4043 9729
  7. //7512 1299 1611 1054 9291 9948 7213 5882 6891 6149
  8. 1159 7604 1290 7426 8342 4907 7802 2285 6828 4547
  9.              //940 4594 5470 3831 7949 3308 8553 5841 4532 6151
  10. ;2048 4362 7137 6227 1843 2833 119 6124 6716 4435
  11. 6342 132 4637 4359 7482 632 8 35 9999 1023
复制代码
代码:
  1. @echo off
  2. for /f "delims=" %%i in ('findstr /n .* a.txt') do (
  3.     set str=%%i
  4.     setlocal enabledelayedexpansion
  5.     set str=!str:*:=!
  6.     set str=!str:*//=;!
  7.     set str=!str:*;=;!
  8.     for /f "delims=" %%a in ("!str!") do echo %%a
  9.     endlocal
  10. )
  11. pause
复制代码

评分

参与人数 1PB +7 收起 理由
wxcute + 7 因我的失误,未说明清楚。按原来的解释可得 ...

查看全部评分

 楼主| 发表于 2009-6-9 21:43:27 | 显示全部楼层

回复 2楼 的帖子

感谢指正,已在示例文本中添加说明。
发表于 2009-6-10 12:53:27 | 显示全部楼层
处理了一下开头有空格的行及空白行
测试文本test.txt如下:
  1. asdfas dflasdf
  2.   ;asdlfkjlk
  3.   //alsdkflk
  4. ;hfajksdfhk
  5. //kljhadsf
  6.    
  7. poipoi //asdf
  8. asdfasdf; //asdf
  9. klhjasdf; asdf
复制代码
代码:
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "tokens=*" %%a in (test.txt) do ( if not "%%a"==""  echo %%a >> _tmp.txt )
  3. for /f "usebackq delims=" %%i in (`findstr /V "^; ^//" _tmp.txt`) do (
  4.     set str=%%i
  5.     set str=!str://=@!
  6.     for /f "delims=@" %%j in ("!str!") do echo %%j
  7. )
  8. del _tmp.txt
  9. pause>nul
复制代码

评分

参与人数 1PB +7 收起 理由
wxcute + 7 结果比较理想。

查看全部评分

发表于 2009-7-13 02:31:48 | 显示全部楼层
  1. @echo off
  2. for /f "tokens=1* delims=//" %%a in ('type a.txt ^|findstr /v /b /c:"//"') do echo %%a
  3. pause >nul
复制代码

评分

参与人数 1PB +3 收起 理由
wxcute + 3 单文本内容中有单斜杠时会被认为是注释。 ...

查看全部评分

发表于 2009-8-6 21:19:03 | 显示全部楼层
  1. @echo off
  2. for /f "eol=/  delims=/ tokens=1" %%i in (tset.txt) do echo %%i>>b.txt
  3. for /f %%j in (b.txt) do echo %%j
  4. del b.txt&pause
复制代码
自己感觉不好,应该再简化一下。
发表于 2009-8-7 00:11:49 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f  "eol=; delims=" %%a in (sample.txt) do (
  3.       set "x=%%a"&set b=!x:*//=!
  4.       if defined b (call set var=%%x://!b!=%%) else set var=!x!
  5.       if defined var echo !var!>>resolution.txt
  6. )
  7. pause
复制代码

[ 本帖最后由 Lumiere 于 2009-8-7 00:45 编辑 ]
发表于 2009-8-26 09:01:55 | 显示全部楼层
先把";"  开头的行剔除并把其他行开头添加 “// ”,再用FOR 显示 //  割断的第一部分。

@ECHO OFF
IF EXIST TEMP.TXT DEL TEMP.TXT
FOR /F "EOL=; DELIMS=" %%C IN ('type TEST.TXT') DO (
  SET "X=%%C"
  SETLOCAL ENABLEDELAYEDEXPANSION
  ECHO // !X!>>TEMP.TXT
  ENDLOCAL
)
FOR /F "TOKENS=1 DELIMS=//" %%D IN ('TYPE TEMP.TXT') DO (
  IF NOT "%%D"==" " ECHO %%D
)
DEL TEMP.TXT
PAUSE
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:04 , Processed in 0.022466 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表