中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: FOR循環與findstr怎么合并?? 上一主题 | 下一主题
van416
初级用户





积分 34
发帖 30
注册 2010-12-2
状态 离线
『楼 主』:  FOR循環與findstr怎么合并??

今天在做FOR語句不知道該如何將for語句與findstr合并,以下為分開的程式,請幫忙看看,感謝~

需求:將project字段后的內容取出

2.ini
Hierarchy ID          : Normal Board
Chip SKU              : 250
Project               : 1060-0011
CDP                   : N/A

1.bat
@echo off
DEL 1.txt
findstr "^Project" 2.ini>1.txt

2.bat
@echo off
setlocal
for /f "delims=: tokens=2" %%i in (1.txt) do (
       set biosv=%%i
)
echo.%biosv% >bios.dat

endlocal

以上,想將1.bat與2.bat合并,該將1.bat如何加入到2.bat中呢?

2010-12-10 09:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qinchun36
高级用户

据说是李先生


积分 609
发帖 400
注册 2008-4-23
状态 离线
『第 2 楼』:  

可以使用这种样式的语句来处理结果并且避免中间文件的产生:

FOR /F %x IN ('有文字输出的命令行') DO ***

那个命令行用单引号包起来,顺便说一句,delims最好写在最后。
for /f "tokens=2 delims=: " %%i in ('findstr "^Project" 2.ini') do


2010-12-10 10:19
查看资料  发送邮件  发短消息 网志  OICQ (182484135)  编辑帖子  回复  引用回复
van416
初级用户





积分 34
发帖 30
注册 2010-12-2
状态 离线
『第 3 楼』:  

感謝~~ 已經解決了~~~

2010-12-10 10:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yf6122010
新手上路





积分 18
发帖 18
注册 2010-12-6
状态 离线
『第 4 楼』:  

学习了。。

2010-12-10 11:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
a081910
新手上路





积分 2
发帖 2
注册 2010-12-9
来自 北京
状态 离线
『第 5 楼』:  

学习一下!谢谢

2010-12-10 15:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
van416
初级用户





积分 34
发帖 30
注册 2010-12-2
状态 离线
『第 6 楼』:  

我有DOS下沒有findstr這個命令,用WINXP下的又不能用,用這個工具的能不能上偉一下給我

2010-12-10 16:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 7 楼』:  

这样不可以吗?
@echo off&setlocal enabledelayedexpansion
for /f "tokens=1* delims=:" %%i in (1.ini) do (
       set i=%%i
       if /i "!i:~0,7!"=="Project" >>bios.dat echo %%j
)




批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-12-10 16:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
van416
初级用户





积分 34
发帖 30
注册 2010-12-2
状态 离线
『第 8 楼』:  

for /f "tokens=1* delims=:" %%i in (1.ini) do (
       set i=%%i
       if /i "!i:~0,7!"=="Project" >>bios.dat echo %%j

有幾句看不太明白

tokens=1* 是什么意思?

if /i "!i:~0,7!"=="Project" >>bios.dat echo %%j
這一句也不明白,if /i   0,7是什么意思呢?

2010-12-10 17:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 9 楼』:  

俺没用dos,所以不清楚这样的语法在dos下支持不,如果支持的,搂主在研究他什么意思。。。



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-12-10 17:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
van416
初级用户





积分 34
发帖 30
注册 2010-12-2
状态 离线
『第 10 楼』:  

嗯 ,好的,謝謝,可以用的

現在不明白的是 if /i "!i:~0,7!"=="Project" 其中!i:~0,7是什么意思呢?

2010-12-10 17:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 11 楼』:  

if /i "!i:~0,7!"=="Project"
/i忽略大小写
!i:~0,7!截取变量的第一字符开始,共7个字符
!是%在变量延迟时的写法



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-12-10 17:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
van416
初级用户





积分 34
发帖 30
注册 2010-12-2
状态 离线
『第 12 楼』:  

謝謝。。明白了

還有一個問題:for命令在純MS-DOS下好像不支持for /f語句,請問這個for命令可以下載嗎?

2010-12-10 18:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 13 楼』:  

for 是个内部命令。。。



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-12-10 18:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
van416
初级用户





积分 34
发帖 30
注册 2010-12-2
状态 离线
『第 14 楼』:  

怎么更新DOS下FOR命令呢? 我好像找不到呢?

2010-12-10 18:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 15 楼』:  


@echo off
find /i "Project" 2.ini>han_1.txt
more +2 han_1.txt>han_2.txt
set/p k=<han_2.txt
set k=%k:*:=%
del /q han_*
echo %k:~1% >bios.dat
[ Last edited by Hanyeguxing on 2010-12-10 at 19:37 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-12-10 19:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: