中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]如何提取文本第一行作为新建文件夹的名字
« [1] [2] »
作者:
标题: [已解决]如何提取文本第一行作为新建文件夹的名字 上一主题 | 下一主题
jinthree
新手上路





积分 18
发帖 8
注册 2006-12-7
状态 离线
『第 16 楼』:  



  Quote:
Originally posted by zh159 at 2007-12-25 02:03 PM:
FINDSTR放到for里面
FOR /F "eol=; tokens=7 delims= " %%i in ('FINDSTR /i %1 log.txt') do Echo %%i

这样会把log.txt 所有含 %1 的文本行找出来。我只要第一个含有%1 行就可以了。找了一下findstr和for的参数都没法控制只找一行。所以用了goto 跳出循环。

现在用这个取代:
for /f "tokens=7 delims= " %%i in ('findstr /n %1 log.txt^|findstr /b "1:"') do echo %%i >> temp03.txt

[ Last edited by jinthree on 2007-12-25 at 03:14 PM ]

2007-12-25 14:34
查看资料  发短消息 网志   编辑帖子
cdmtys168
新手上路





积分 11
发帖 7
注册 2008-11-14
状态 离线
『第 17 楼』:  如何提取文本文件建立多个文件夹

如何提取文本文件里的每一行,作为名字来建立多个文件夹?

2008-11-14 03:55
查看资料  发送邮件  发短消息 网志   编辑帖子
iyou
新手上路





积分 18
发帖 20
注册 2008-11-5
状态 离线
『第 18 楼』:  

set/p file=<a.txt
md %file%
能具体解释一下嘛,为什么有逗号会忽略逗号之前的呢,有空格还会以空格为界建2格文件夹呢

2008-11-14 16:39
查看资料  发送邮件  发短消息 网志   编辑帖子
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 19 楼』:  



  Quote:
Originally posted by iyou at 2008-11-14 04:39 PM:
set/p file=<a.txt
md %file%
能具体解释一下嘛,为什么有逗号会忽略逗号之前的呢,有空格还会以空格为界建2格文件夹呢

1、set /p str=请输入:
输入的时候能输入两行文字吗?不能!所以 set/p file=<a.txt 只取得第一行字符。

2、md 与 分隔符
如果要创建的文件夹的名称含有空格,必须用双引号括起来。
例:
md "1 2"
:: 创建一个文件夹,名字为 1 2

md 1 2 3
:: 创建三个文件夹,名字分别为 1、2、3

md a,b;c
:: 创建三个文件夹,名字分别为 a、b、c
:: 其中的逗号和分号是分隔符。删除文件夹的时候也可以:rd a;b;c
___________________________________________________________

  Quote:
为什么有逗号会忽略逗号之前的呢

??

[ Last edited by tireless on 2008-11-14 at 17:58 ]

2008-11-14 17:56
查看资料  发短消息 网志   编辑帖子
slw218856
初级用户





积分 133
发帖 75
注册 2008-8-3
状态 离线
『第 20 楼』:  



  Quote:
Originally posted by terse at 2007-12-19 07:11 PM:
@echo off
for /f "delims=" %%a in (a.txt) do  if not defined fss set fss="%%a"
md %fss%

if not defined这个不是很清楚,解释一下如何实现第一行为文件名的?
先谢谢

2008-11-14 18:25
查看资料  发送邮件  发短消息 网志   编辑帖子
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 21 楼』:  Re 20楼

例如 a.txt 的内容是:

第一行
第二行
第三行

for /f "delims=" %%a in (a.txt) do  if not defined fss set fss="%%a"

因为 for 是每读取一行,然后把读取到的字符套入 for 语句中:

  Quote:
C:\>test.bat

C:\>for /F "delims=" %a in (a.txt) do if not defined fss set fss="%a"

C:\>if not defined fss set fss="第一行"

C:\>if not defined fss set fss="第二行"

C:\>if not defined fss set fss="第三行"

在执行这个 for 之前,并没有定义 fss 变量,所以当执行 if not defined fss set fss="第一行" 这句后,就设置了变量 fss 的值为 第一行。从第二行开始就不再设置变量 fss 的值了,因为 if not defined fss ... 而我已经 defined fss 过了(第一行)... ...

——————————————————————————————————

这是一个方法,但最好的两种方法是:

10 楼:读取文本中的第一行的字符,执行相应命令后就跳出 for 循环。
@echo off
for /f "delims=" %%i in (a.txt) do md "%%i" &exit
11 楼:
set/p file=<a.txt
md %file%


2008-11-14 19:05
查看资料  发短消息 网志   编辑帖子
kissbill
初级用户





积分 61
发帖 35
注册 2008-10-4
状态 离线
『第 22 楼』:  

都是经典解决方案啊   学习了

不小心把分加到楼主帖子上了  HAT版主的没加上分 汗

[ Last edited by kissbill on 2008-11-15 at 00:29 ]

2008-11-15 00:26
查看资料  发送邮件  发短消息 网志   编辑帖子
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: