标题: 请教:如何在批处理中删除指定文本文件中的空白行?
[打印本页]
作者: Tamm
时间: 2004-4-18 00:00
标题: 请教:如何在批处理中删除指定文本文件中的空白行?
各位好!首先谢谢你关注我的问题。
具体情况是这样的:
在下在编写一个批处理中想要使用 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编辑过]
作者: Climbing
时间: 2004-4-18 00:00
用Horst的Listmod或者lmod均可以去掉空行。
type %HD%DiskPar.txt | listmod $*
或
type %HD%DiskPar.txt | lmod /L3*
后一条命令连temp1.txt那一行都可以去掉。
作者: Tamm
时间: 2004-4-19 00:00
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 文上了 ^_^ )
作者: Climbing
时间: 2004-4-19 00:00
WBAT就是Horst(全名是Horst Schaeffer)的产品,如果你知道从哪里下载WBAT,那么在同样的地方你就可以下载到listmod 或者 lmod。
同样的用google搜索:Horst listmod关键字,也可以搜索到很多下载点。
最后,我提供一下Horst的主页:
http://home.mnet-online.de/horst.muc/
作者: Tamm
时间: 2004-4-19 00:00
太谢谢了!这些正是我想要的东西。
啃ing...
BTW:我的 WBAT 是从另外的第三方站点下载的,因为刚弄到手不久,一直在研究它的 DEMO 。至今仍未访问过它的"老家"