中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 20:56
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教--如何不打开一个ini文件并修改其中参数值
楼 主 请教--如何不打开一个ini文件并修改其中参数值 发表于 2006-04-05 12:14 ·  文莱
新手上路
积分 8
发帖 2
注册 2006-04-05 12:10
UID 53361
状态 离线
有这样一个需求。
想通过命令行方式修改INI文件中某个参数的赋值,但不想通过notepad,edit等进行人为手工查找替换等操作。这个参数在该INI中名字唯一,但行数不是固定。
2 发表于 2006-04-05 13:24 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
UID 50550
状态 离线

@echo off
for /f "delims=: tokens=1,2" %%i in ('"findstr /n . 123.txt"') do set %%i=%%j & set col=%%i
for /f "delims=:" %%m in ('"findstr /n /c:"内容" 123.txt"') do set num=%%m
set /a var = num - 1
for /l %%n in (1,1,%var%) do echo %%%%n%% | findstr . >>tmp.txt
echo %%%num%:内容=新内容%% | findstr . >>tmp.txt
set /a var = var + 2
for /l %%e in (%var%,1,%col%) do echo %%%%e%% | findstr . >>tmp.txt

自己看着改改,原理就这些了。
3 发表于 2006-04-05 14:17 ·  文莱
新手上路
积分 8
发帖 2
注册 2006-04-05 12:10
UID 53361
状态 离线
嘿嘿,谢谢大侠,不过还没有看懂,拿回去好好研究一下。
4 发表于 2006-04-05 18:04 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
UID 1565
性别 男
来自 河北保定
状态 离线
如果不反对使用第三方工具,那么使用Horst的VarSet或者inifile这一类的工具更简单。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
5 发表于 2006-04-05 19:01 ·  中国 辽宁 朝阳 联通
铂金会员
★★★★
痴迷DOS者
积分 5,798
发帖 1,924
注册 2003-06-20 00:00
UID 5583
性别 男
来自 金獅電腦軟體工作室
状态 离线
同意楼上的说法。
熟能生巧,巧能生精,一艺不精,终生无成,精亦求精,始有所成,臻于完美,永无止境!
金狮電腦軟體工作室愿竭诚为您服务!
QQ群:8393170(定期清理不发言者)
个人网站:http://www.520269.cn
电子邮件:doujiehui@vip.qq.com
微信公众号: doujiehui
6 发表于 2006-04-05 20:51 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
UID 50550
状态 离线
等。。等,我要抬个......杠。
如果用第三方工具的话比如用vbs了,灵活简便,follow me...

if WScript.Arguments.Count <> 0 Then
myFile = Wscript.Arguments(0)
else
SET oFO = CreateObject("SAFRCFileDlg.FileOpen")
oFO.OpenFileOpenDlg
myFile = oFO.FileName
end if
strOld = InputBox("输入要被替换的文字:")
if Len(Trim(strOld)) = 0 then Wscript.Quit
strNew = InputBox("输入被替换后的文字:")
if Len(Trim(strNew)) = 0 then Wscript.Quit

with CreateObject("Scripting.FileSystemObject")
SET FILE = .OpenTextFile(myFile,1,true)
fStr = FILE.Readall
FILE.Close
fStr = Replace(fStr,strOld,strNew,1,1)
SET FILE = .OpenTextFile(myFile,2,true)
FILE.Write fStr
end with

保存为 修改ini文件.vbs ,然后把要修改的文件直接拖放到它上面,然后按照提示来就行了,如果直接双击会打开对话框让你选择要修改的文件。
默认只替换一次,如果想替换多次的话可以自行修改倒数第四行的最后一个1为其他的数字。
似乎跑题了,这里是DOS论坛,我的同志们。
7 发表于 2006-04-06 03:20 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re 3742668:

杠需要两人抬,我也帮下忙吧

首先,vbs可以由Windows自带的cscript提供支持,所以不能算“第三方”;其次,vbs是脚本语言,而“工具”只能是其支持程序,比如cscript;再次,修改ini并非字符串替换,因为通常我们是根据ini中的变量名而非变量值或者变量名+变量值来修改变量;最后,若要不跑DOS论坛的题,那么你的CMD脚本也该挂冠归隐了。

另外,在没使用inifile和VarSet之前,在DOS下也曾编过类似的批处理代码,可惜现在找不到了,重写编写则没有太强的目的性。
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
8 发表于 2006-04-06 19:09 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
UID 50550
状态 离线
Re willsort:
既然是抬杠那我还是要继续。
首先,有鉴于本人在6楼可耻地出现的笔误,给willsort兄造成了错觉,认为我把vbs当作第三方工具了,其实我的原话应该是“如果用第三方工具的话不如用vbs了,灵活简便,follow me...”,请注意偏移量为10处的字为“不”,所以,willsort兄的第一杠无效。
其次,由于没有领会到楼主提问的精神,造成脚本目的性的错误,但是从另一个角度来看,只需要对我的俩脚本稍加改造就可实现要求,给予了楼主自己编写的机会。当然,如果有人说我的脚本可移植性强我也没有意见。
最后,挂冠归隐这个词让我觉得似乎不是在抬杠,再说了,CMD和DOS看起来也算是差不多,且是一母所生,算做是DOS也不是很牵强吧。
9 发表于 2006-04-06 21:01 ·  中国 河北 保定 移动
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
UID 1565
性别 男
来自 河北保定
状态 离线
两位都是抬杠的高手,我对两位的景仰之情同样都如滔滔江水,连绵不绝...
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
10 发表于 2006-04-06 21:13 ·  中国 上海 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
UID 35785
性别 男
状态 离线
Originally posted by Climbing at 2006-4-6 21:01:
两位都是抬杠的高手,我对两位的景仰之情同样都如滔滔江水,连绵不绝...


哈哈哈哈哈……

虽然俺啥也没看懂,但小磕,你越来越可爱了。来,在让俺亲一个哈哈哈哈哈……
11 发表于 2006-04-06 21:55 ·  中国 山西 临汾 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re All:

抬杠还是适可而止吧,正所谓“小抬怡情,大抬伤身”。因此,关于CMD与DOS的错综纠缠不再详述。

需要提请各位注意的是,在此 ”DOS疑難解答 & 問題討論 (解答室)” 中,近期内涌现出大量讨论 WiindowsNT 命令脚本的主题帖,这固然可以长足促进 Windows NT 命令脚本的交流和发展,但由于类似园艺学中的顶端优势原理,其他类型的讨论主题必不可免的受到抑制性影响。从长远和大局来看,这对 CNDOS 论坛的发展是不利的。因此,建议更多用户,积极发表和回复其他类型的主题,全面促进论坛建设和发展。

谢谢合作!
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
12 发表于 2006-04-07 13:59 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
UID 1565
性别 男
来自 河北保定
状态 离线
到现在,纯DOS实在没有什么太多的新鲜话题可资讨论,你说呢,wil兄?

到目前为止,一涉及到纯DOS,基本上就是USB设备如何驱动?一个游戏该如何能玩?内存该怎么优化?要么就是串口读写之类的问题了。基本上,要么是无法解决,要么就是讨论了太多。

不谈cmd与DOS的区别有多大,毕竟cmd还是属于DOS范畴,别攻击我,我是这么认为的。我还是原来的论调,以实用为主,不要形而上学。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
论坛跳转: