中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » 请教:如何在批处理中删除指定文本文件中的空白行?
作者:
标题: 请教:如何在批处理中删除指定文本文件中的空白行? 上一主题 | 下一主题
Tamm
中级用户




积分 397
发帖 64
注册 2004-4-18
状态 离线
『楼 主』:  请教:如何在批处理中删除指定文本文件中的空白行?

各位好!首先谢谢你关注我的问题。
具体情况是这样的:
在下在编写一个批处理中想要使用 wbat list 命令提供一个选择分区的界面,下面是批处理中相关的命令(与问题无关的语句已隐去):
(%HD% 表示第几个硬盘,已提前赋值)

gdisk %HD% >%temp%\temp.txt
ECHO :sign >%temp%\temp1.txt
find /i "primary" %temp%\temp.txt >> %temp%\temp1.txt
find /i "logical" %temp%\temp.txt >> %temp%\temp1.txt
find /i /v "TXT" %temp%\temp1.txt >%temp%\%HD%DiskPar.txt
::del %temp%\temp*.txt
call w.bat list @%temp%\%HD%DiskPar.txt :sign
:THE END


执行后 temp.txt 文件内容如下:
Disk  Partitions  Cylinders  Heads  Sectors  Mbytes  Model
  1       10         9729     255      63   76319.1  Unavailable

Partition  Status   Type     Volume Label   Mbytes   System   Usage
C:  1        A    PRIMARY    98            2000.2  FAT32       3%
     2             EXTENDED                74316.3             97%
     3             LOGICAL                  4000.5  NTFS/HPFS   5%
     4             LOGICAL                 15029.5  NTFS/HPFS  20%
     5             LOGICAL                 10001.4  NTFS/HPFS  13%
     6             LOGICAL                  4000.5  NTFS/HPFS   5%
     7             LOGICAL                  4000.5  NTFS/HPFS   5%
D:  8             LOGICAL    BACKUP       12276.2  FAT32      16%
E:  9             LOGICAL    TEMP          5004.6  FAT32       7%
    10             LOGICAL                 20002.8  NTFS/HPFS  26%

temp1.txt 内容如下:
:sign

---------- C:\WINDOWS\TEMP\temp.txt
C:  1        A    PRIMARY    98            2000.2  FAT32       3%

---------- C:\WINDOWS\TEMP\temp.txt
     3             LOGICAL                  4000.5  NTFS/HPFS   5%
     4             LOGICAL                 15029.5  NTFS/HPFS  20%
     5             LOGICAL                 10001.4  NTFS/HPFS  13%
     6             LOGICAL                  4000.5  NTFS/HPFS   5%
     7             LOGICAL                  4000.5  NTFS/HPFS   5%
D:  8             LOGICAL    BACKUP       12276.2  FAT32      16%
E:  9             LOGICAL    TEMP          5004.6  FAT32       7%
    10             LOGICAL                 20002.8  NTFS/HPFS  26%


%HD%DiskPar.txt 内容如下:

---------- C:\WINDOWS\TEMP\temp1.txt
:sign

C:  1        A    PRIMARY    98            2000.2  FAT32       3%

     3             LOGICAL                  4000.5  NTFS/HPFS   5%
     4             LOGICAL                 15029.5  NTFS/HPFS  20%
     5             LOGICAL                 10001.4  NTFS/HPFS  13%
     6             LOGICAL                  4000.5  NTFS/HPFS   5%
     7             LOGICAL                  4000.5  NTFS/HPFS   5%
D:  8             LOGICAL    BACKUP       12276.2  FAT32      16%
E:  9             LOGICAL    TEMP          5004.6  FAT32       7%
    10             LOGICAL                 20002.8  NTFS/HPFS  26%


这时候 call w.bat list  显示出来的 list 会有两个空行,虽然也有办法可以在处理
%wbat% 返回值的时候正确识别出空行并不做处理,或者返回 list 命令重新显示列表(感觉就是点空行没有什么反应),但总归感觉不理想。

这里请教各位高手:如何在批处理中删除指定文本文件中的空白行?

另:
这里列出的结果使用的是 Win98 里的 Find.exe (大小 6.50KB)命令,如果使用
Wengier 的超级启动盘中提供的那个 Find.com (大小 2.89KB) 则不会有这两个空行。但那个 Find.com 不知道为什么,在 windows 98 的 DOS 窗口执行的时候大多数情况都正常,偶尔会出现错误(几率比较小),而在纯粹的 DOS 环境下,运行就从没有成功过,出错的现象是:最终的 %HD%DiskPar.txt 文件中只有如下一行:
Invalid drive specification
别的什么也没有了。请高手指教这个错误提示是为什么?
而如果用 win98里的 Find.exe 。则各种环境都从不出错 (但总是有两个空行)














[此贴子已经被作者于2004-4-18 18:16:47编辑过]




2004-4-18 00:00
查看资料  发送邮件  发短消息 网志  OICQ (136587)  编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 2 楼』:  

用Horst的Listmod或者lmod均可以去掉空行。

type %HD%DiskPar.txt | listmod $*

type %HD%DiskPar.txt | lmod /L3*

后一条命令连temp1.txt那一行都可以去掉。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2004-4-18 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
Tamm
中级用户




积分 397
发帖 64
注册 2004-4-18
状态 离线
『第 3 楼』:  



  Quote:
以下是引用Climbing在2004-4-18 21:13:00的发言:
用Horst的Listmod或者lmod均可以去掉空行。

type %HD%DiskPar.txt | listmod $*

type %HD%DiskPar.txt | lmod /L3* 

后一条命令连temp1.txt那一行都可以去掉。

非常谢谢 Climbing 先生的指点。
因为我最近才学习使用 DOS 命令,水平非常的菜,对 DOS 工具的了解少得可怜(努力学习中...).从没用过 "Horst的Listmod或者lmod..." 实在不好意思。我在论坛翻了好久,也没找到相关的信息,论坛里很多链接好像都已经失效(不知道是不是我的网络问题,但我总是打不开)
所以还想继续麻烦指点一下:
从哪里可以弄到这个 Horst 工具?
我是否有可能从这个工具本身自带的提示(或帮助)信息中学会使用它?

(我的E文水平也很差,但我不是很懒,最近我花了十天左右的时间通过 WBAT 里自带的 DEMO 已经基本掌握了它的使用方法,主要时间都花在了翻译那些 E 文上了 ^_^ )

2004-4-19 00:00
查看资料  发送邮件  发短消息 网志  OICQ (136587)  编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 4 楼』:  

WBAT就是Horst(全名是Horst Schaeffer)的产品,如果你知道从哪里下载WBAT,那么在同样的地方你就可以下载到listmod 或者 lmod。

同样的用google搜索:Horst listmod关键字,也可以搜索到很多下载点。

最后,我提供一下Horst的主页:
http://home.mnet-online.de/horst.muc/



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2004-4-19 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
Tamm
中级用户




积分 397
发帖 64
注册 2004-4-18
状态 离线
『第 5 楼』:  

太谢谢了!这些正是我想要的东西。
啃ing...

BTW:我的 WBAT 是从另外的第三方站点下载的,因为刚弄到手不久,一直在研究它的 DEMO 。至今仍未访问过它的"老家"

2004-4-19 00:00
查看资料  发送邮件  发短消息 网志  OICQ (136587)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: