中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 20:59
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 从文本中提取内容,删除空行...
楼 主 从文本中提取内容,删除空行... 发表于 2007-01-06 05:34 ·  中国 湖南 永州 电信
初级用户
积分 83
发帖 32
注册 2006-12-26 05:27
UID 74585
性别 男
状态 离线
1.有个en.txt文件,内容如下:
I like the subtle fresh green budding from the branches of the tree -- the herald of spring, ushering in the dawn

I like the subtle flow of cloud that makes the sky seem even more vast, azure and immense...
I like the subtle wind. In spring, it steals a kiss on my cheek; in autumn, it caresses my face; in summer, it brings in cool sweet smell; in winter, it carries a crisp chilliness. The subtle bitter is what it is meant to be.


I like the subtle brings in do anyting...
1).怎么把这个文本中的所有空行去掉并保存为en1.txt.
2).怎么把"that makes the sky "输出并保存为en2.txt(从en.txt中提取)

2.我在d盘下建立了个文件夹为:a. (D:\a..\ 畸形文件夹),怎么把d盘里面的1.txt复制到文件夹a.中?又怎么将1.txt复制到e盘下(从a.中)?

3.在d盘文件夹为:a. (D:\a..\ 畸形文件夹)中有个f.bat,为什么不能在里面运行?,怎么才能使其运行?

新手遇到这些难题希望有人解答,只要能解决,不管几个十分感谢!

[ Last edited by Mekinery on 2007-1-6 at 10:43 PM ]
2 发表于 2007-01-06 06:44 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
UID 51697
来自 成都
状态 离线
  1、1)
  在不考虑特殊字符的情况下可以使用如下代码:

@echo off
cd.>en1.txt
for /f "delims=" %%i in (en.txt) do >>en1.txt echo %%i
start en1.txt

  1、2)
echo that makes the sky>en2.txt


  你在同一个帖子里提出了超过1个的不甚相关的问题,既不便于解答,又容易被忽略掉,不推荐这样做,请另开新帖发其他问题,最好是一帖一问。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
3 发表于 2007-01-06 07:09 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线

::1、命令行执行即可
for /f "delims=" %a in (en.txt) do @>>en1.txt echo=%a

::2、保存为批处理copyf.bat
@echo off
for /f "tokens=4" %%a in ('dir /x/ad d:\^|find "DIR"^|find "a."') do set file=%%a
copy 1.txt d:\%file%\
copy d:\%file%\1.txt e:\

::3、保存为批处理run.bat
@echo off
for /f "tokens=4" %%a in ('dir /x/ad d:\^|find "DIR"^|find "a."') do start "" d:\%%a\f.bat
4 发表于 2007-01-06 07:41 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
1.1
sed "s/^$//" en.txt|more>en1.txt

1.2
sed "/that makes the sky/!d;s/.*\(that makes the sky\).*/\1/" en.txt|more>en2.txt

[ Last edited by vkill on 2007-1-6 at 07:48 AM ]
5 发表于 2007-01-06 11:09 ·  中国 湖南 永州 电信
初级用户
积分 83
发帖 32
注册 2006-12-26 05:27
UID 74585
性别 男
状态 离线
首先非常感谢 版主 namejm 、 lxmxn 以及 vkill,不仅使得困绕我多时的问题得到了部分解决,而且使我长进了知识....

版主解决了:
1).怎么把这个文本中的所有空行去掉并保存为en1.txt

lxmxn解决了:
2.我在d盘下建立了个文件夹为:a. (D:\a..\ 畸形文件夹),怎么把d盘里面的1.txt复制到文件夹a.中?
3.在d盘文件夹为:a. (D:\a..\ 畸形文件夹)中有个f.bat,为什么不能在里面运行?,怎么才能使其运行?

但是还有:
2).怎么把"that makes the sky "输出并保存为en2.txt(注意是从en.txt文本中提取)
又怎么将1.txt复制到e盘下(从a.中)?

希望各位解决剩下的问题,谢谢!

嘿嘿,多谢版主提醒以后俺按规章制度办事。

[ Last edited by Mekinery on 2007-1-5 at 10:10 PM ]
6 发表于 2007-01-06 11:18 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
UID 51697
来自 成都
状态 离线
  既然你知道你要提取的内容是 that makes the sky ,那么,为什么非得从en.txt里提取不可呢?直接输出不更快捷一点吗?你要提取的可能是某个位置中的指定字符串而非你所说的那几个单词吧?
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
7 发表于 2007-01-06 11:30 ·  中国 辽宁 本溪 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
UID 73417
性别 男
状态 离线
我也觉得很奇怪,哈哈
8 发表于 2007-01-06 11:39 ·  中国 辽宁 本溪 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
UID 73417
性别 男
状态 离线
copy d:\a..\\1.txt e:\
9 发表于 2007-01-06 11:49 ·  中国 湖南 永州 电信
初级用户
积分 83
发帖 32
注册 2006-12-26 05:27
UID 74585
性别 男
状态 离线
恩,是的版主,我是想提取文本某个位置中的指定字符串,就那这个文本做个假设,不知道能不能解决?

非常感谢jmz573515
解决了:
又怎么将1.txt复制到e盘下(从a.中)? [注意是从d盘文件夹a.中复制到e盘下,而不是从d盘复制到e盘]

期待最后一个问题了...
高手如云,相信不久可以解决了....哈哈
10 发表于 2007-01-06 11:56 ·  中国 辽宁 本溪 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
UID 73417
性别 男
状态 离线
你要提取的文字一定要有一定的规律(特征),才能提取要不很难做到,因为根本就不知道根据什么来判断啊?能说一下是根据什么来提取吗?
11 发表于 2007-01-07 02:28 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
呵呵,估计楼主没有 sed.exe 呵呵
论坛跳转: