![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-08 03:44 |
共 48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 怎样提取一个文件中的变量值? |
| 可打印版本 843 / 8 |
| 第1楼 westwind | 发表于 2008-04-17 15:53 |
| 初级用户 发帖 28 积分 72 | |
|
怎样提取一个文件中的变量值? 目前有一个文件config.ini,其内容为:
update=yes a=sss bak=yes datetime=200804171356 name=t . . . 我有2件事要做: 1,判断update的值是否为'yes',如果是的,就执行另一个批处理1.bat,执行完后令update=no,这个我已经实现了,但缺点是update=yes必须放在第一行: @echo off for /f "tokens=*" %%a in (config.ini) do ( if /I %%a==update=yes ( call 1.bat ECHO update=no>config.ini ) else ( echo %%a>>config.ini ) ) 有谁可以帮我改改?我不想用新建一个临时文件去替换的方式实现。 2,在call 1.bat后,要提取config.ini中的变量datetime的值(这个值是随时变化的,所以我不想写死在批处理里),并传递给1.bat,或直接在1.bat里提取datetime的值,这个应该怎样实现呢? 1.bat的内容是: xcopy /s/r/y d:\temp\*.* e:\temp 我要datetime的值的目的是在执行完1.bat后生成一个以datetime的值为名字的log文件。 谢谢! [ Last edited by westwind on 2008-4-17 at 04:30 PM ] |
|
| 第2楼 26933062 | 发表于 2008-04-17 16:25 |
| 银牌会员 发帖 879 积分 2,268 | |
|
你说想把datetime的值传给1.bat但是如果datetime=200804171356在update=yes的下面,就没法传给1.bat了。因为update=yes时启动了1.bat,但是还没有循环到datetime=200804171356这一行。
: [ Last edited by 26933062 on 2008-4-17 at 04:26 PM ] |
|
| 第3楼 westwind | 发表于 2008-04-17 16:43 |
| 初级用户 发帖 28 积分 72 | |
|
不好意思,我的代码里应该是call 1.bat, 而不是testC.bat,我已经改过来了,请问在call 1.bat之后,怎样在1.bat里接收这个datetime呢?如果不能传递到1.bat里面,可否直接在1.bat 里面读config.ini里面的datetime?
|
|
| 第4楼 26933062 | 发表于 2008-04-17 17:03 |
| 银牌会员 发帖 879 积分 2,268 | |
|
::简化了一下,如果在call 1。bat之前就提取到了datetime的值,就把它当参数传给1.bat
如果call 1.bat时,还没有取到datetime的值,就在1.bat中再从config.ini中提取。 : 1.bat 内容 [ Last edited by 26933062 on 2008-4-17 at 05:06 PM ] |
|
| 第5楼 westwind | 发表于 2008-04-17 17:39 |
| 初级用户 发帖 28 积分 72 | |
|
用你简化后的批处理测试,并将config.ini调整为:
datetime=200804171356 update=yes a=sss bak=yes name=t 发现运行后,update以下的参数都没了。。 只有 datetime=200804171356 update=no [ Last edited by westwind on 2008-4-17 at 05:45 PM ] |
|
| 第6楼 26933062 | 发表于 2008-04-17 17:49 |
| 银牌会员 发帖 879 积分 2,268 | |
|
我测试没问题啊?
|
|
| 第7楼 westwind | 发表于 2008-04-17 18:05 |
| 初级用户 发帖 28 积分 72 | |
|
请问%~1和%~2分别是什么意思?
这段代码好象跟config.ini的内容顺序有关系,如果datetime在update的后面批处理会出问题,即config.ini像这样: update=yes datetime=200804171356 a=sss bak=yes name=t 不过用回原来你简化前的就可以了,你测试是用的简化后的代码测的? [ Last edited by westwind on 2008-4-17 at 06:15 PM ] |
|
| 第8楼 26933062 | 发表于 2008-04-17 18:20 |
| 银牌会员 发帖 879 积分 2,268 | |
|
代码没问题,问题出在你的1.bat上面,
当update=yes时,config.ini的内容已经重写了,但还没有datetime这一行。 所以1.bat也找不到这一行。 这样好了1。bat内容: |
|
| 第9楼 westwind | 发表于 2008-04-17 18:34 |
| 初级用户 发帖 28 积分 72 | |
|
Good! 高手!
Thank You Very Much! |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |