中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-25 07:11
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » FOR循環與findstr怎么合并?? 查看 4,604 回复 25
楼 主 FOR循環與findstr怎么合并?? 发表于 2010-12-10 09:41 ·  中国 江苏 无锡 电信
初级用户
积分 34
发帖 30
注册 2010-12-02 01:43
15年会员
UID 178698
性别 男
状态 离线
今天在做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中呢?
2 发表于 2010-12-10 10:19 ·  中国 北京 联通
高级用户
★★★
据说是李先生
积分 609
发帖 400
注册 2008-04-23 15:55
18年会员
UID 116706
性别 男
状态 离线
可以使用这种样式的语句来处理结果并且避免中间文件的产生:

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

那个命令行用单引号包起来,顺便说一句,delims最好写在最后。

for /f "tokens=2 delims=: " %%i in ('findstr "^Project" 2.ini') do
3 发表于 2010-12-10 10:38 ·  中国 江苏 无锡 电信
初级用户
积分 34
发帖 30
注册 2010-12-02 01:43
15年会员
UID 178698
性别 男
状态 离线
感謝~~ 已經解決了~~~
4 发表于 2010-12-10 11:15 ·  中国 广东 深圳 诺瓦科技发展有限公司
新手上路
积分 18
发帖 18
注册 2010-12-06 16:28
15年会员
UID 178780
性别 男
状态 离线
学习了。。
5 发表于 2010-12-10 15:11 ·  中国 北京 电子政务网
新手上路
积分 2
发帖 2
注册 2010-12-09 15:03
15年会员
UID 178983
性别 男
来自 北京
状态 离线
学习一下!谢谢
6 发表于 2010-12-10 16:11 ·  中国 江苏 无锡 电信
初级用户
积分 34
发帖 30
注册 2010-12-02 01:43
15年会员
UID 178698
性别 男
状态 离线
我有DOS下沒有findstr這個命令,用WINXP下的又不能用,用這個工具的能不能上偉一下給我
7 发表于 2010-12-10 16:27 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
这样不可以吗?
@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
)
8 发表于 2010-12-10 17:02 ·  中国 江苏 无锡 电信
初级用户
积分 34
发帖 30
注册 2010-12-02 01:43
15年会员
UID 178698
性别 男
状态 离线
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是什么意思呢?
9 发表于 2010-12-10 17:26 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
俺没用dos,所以不清楚这样的语法在dos下支持不,如果支持的,搂主在研究他什么意思。。。
10 发表于 2010-12-10 17:30 ·  中国 江苏 无锡 电信
初级用户
积分 34
发帖 30
注册 2010-12-02 01:43
15年会员
UID 178698
性别 男
状态 离线
嗯 ,好的,謝謝,可以用的

現在不明白的是 if /i "!i:~0,7!"=="Project" 其中!i:~0,7是什么意思呢?
11 发表于 2010-12-10 17:38 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
if /i "!i:~0,7!"=="Project"
/i忽略大小写
!i:~0,7!截取变量的第一字符开始,共7个字符
!是%在变量延迟时的写法
12 发表于 2010-12-10 18:12 ·  中国 江苏 无锡 电信
初级用户
积分 34
发帖 30
注册 2010-12-02 01:43
15年会员
UID 178698
性别 男
状态 离线
謝謝。。明白了

還有一個問題:for命令在純MS-DOS下好像不支持for /f語句,請問這個for命令可以下載嗎?
13 发表于 2010-12-10 18:24 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
14 发表于 2010-12-10 18:31 ·  中国 江苏 无锡 电信
初级用户
积分 34
发帖 30
注册 2010-12-02 01:43
15年会员
UID 178698
性别 男
状态 离线
怎么更新DOS下FOR命令呢? 我好像找不到呢?
15 发表于 2010-12-10 19:32 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
@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 ]
论坛跳转: