中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-23 02:56
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,273 会员排行
DOS批处理 & 脚本技术(批处理室) » [已解决]如何提取文本第一行作为新建文件夹的名字
可打印版本  4,416 / 21
第16楼 jinthree 发表于 2007-12-25 14:34
新手上路 发帖 8 积分 18
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 ]
第17楼 cdmtys168 发表于 2008-11-14 03:55
新手上路 发帖 7 积分 11
如何提取文本文件建立多个文件夹
如何提取文本文件里的每一行,作为名字来建立多个文件夹?
第18楼 iyou 发表于 2008-11-14 16:39
新手上路 发帖 20 积分 18
set/p file=<a.txt
md %file%
能具体解释一下嘛,为什么有逗号会忽略逗号之前的呢,有空格还会以空格为界建2格文件夹呢
第19楼 tireless 发表于 2008-11-14 17:56
银牌会员 发帖 1,122 积分 2,025
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
___________________________________________________________
为什么有逗号会忽略逗号之前的呢

??

[ Last edited by tireless on 2008-11-14 at 17:58 ]
第20楼 slw218856 发表于 2008-11-14 18:25
初级用户 发帖 75 积分 133
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这个不是很清楚,解释一下如何实现第一行为文件名的?
先谢谢
第21楼 tireless 发表于 2008-11-14 19:05
银牌会员 发帖 1,122 积分 2,025
Re 20楼
例如 a.txt 的内容是:

第一行
第二行
第三行

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

因为 for 是每读取一行,然后把读取到的字符套入 for 语句中:
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 循环。

11 楼:
第22楼 kissbill 发表于 2008-11-15 00:26
初级用户 发帖 35 积分 61
都是经典解决方案啊 学习了

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

[ Last edited by kissbill on 2008-11-15 at 00:29 ]
上一页  1 2
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023