中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教--如何不打开一个ini文件并修改其中参数值
作者:
标题: 请教--如何不打开一个ini文件并修改其中参数值 上一主题 | 下一主题
hisean
新手上路





积分 8
发帖 2
注册 2006-4-5
状态 离线
『楼 主』:  请教--如何不打开一个ini文件并修改其中参数值

有这样一个需求。
想通过命令行方式修改INI文件中某个参数的赋值,但不想通过notepad,edit等进行人为手工查找替换等操作。这个参数在该INI中名字唯一,但行数不是固定。

2006-4-5 12:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 2 楼』:  


@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
自己看着改改,原理就这些了。

2006-4-5 13:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hisean
新手上路





积分 8
发帖 2
注册 2006-4-5
状态 离线
『第 3 楼』:  

嘿嘿,谢谢大侠,不过还没有看懂,拿回去好好研究一下。

2006-4-5 14:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 4 楼』:  

如果不反对使用第三方工具,那么使用Horst的VarSet或者inifile这一类的工具更简单。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2006-4-5 18:04
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
Kinglion
铂金会员

痴迷DOS者


积分 5792
发帖 1921
注册 2003-6-20
来自 金獅電腦軟體工作室
状态 离线
『第 5 楼』:  

同意楼上的说法。



熟能生巧,巧能生精,一艺不精,终生无成,精亦求精,始有所成,臻于完美,永无止境!
金狮電腦軟體工作室愿竭诚为您服务!
QQ群:8393170(定期清理不发言者)
个人网站:http://www.520269.cn
电子邮件:doujiehui@vip.qq.com
微信公众号: doujiehui
2006-4-5 19:01
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (79207959)  编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 6 楼』:  

等。。等,我要抬个......杠。
如果用第三方工具的话比如用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论坛,我的同志们。

2006-4-5 20:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 7 楼』:  

Re 3742668:

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

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

       另外,在没使用inifile和VarSet之前,在DOS下也曾编过类似的批处理代码,可惜现在找不到了,重写编写则没有太强的目的性。



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-4-6 03:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 8 楼』:  

Re willsort:
既然是抬杠那我还是要继续。
首先,有鉴于本人在6楼可耻地出现的笔误,给willsort兄造成了错觉,认为我把vbs当作第三方工具了,其实我的原话应该是“如果用第三方工具的话不如用vbs了,灵活简便,follow me...”,请注意偏移量为10处的字为“不”,所以,willsort兄的第一杠无效。
其次,由于没有领会到楼主提问的精神,造成脚本目的性的错误,但是从另一个角度来看,只需要对我的俩脚本稍加改造就可实现要求,给予了楼主自己编写的机会。当然,如果有人说我的脚本可移植性强我也没有意见。
最后,挂冠归隐这个词让我觉得似乎不是在抬杠,再说了,CMD和DOS看起来也算是差不多,且是一母所生,算做是DOS也不是很牵强吧。

2006-4-6 19:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 9 楼』:  

两位都是抬杠的高手,我对两位的景仰之情同样都如滔滔江水,连绵不绝...



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2006-4-6 21:01
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
DOSforever
金牌会员





积分 4639
发帖 2239
注册 2005-1-30
状态 离线
『第 10 楼』:  



  Quote:
Originally posted by Climbing at 2006-4-6 21:01:
两位都是抬杠的高手,我对两位的景仰之情同样都如滔滔江水,连绵不绝...

哈哈哈哈哈……

虽然俺啥也没看懂,但小磕,你越来越可爱了。来,在让俺亲一个哈哈哈哈哈……



DOS倒下了,但永远不死
DOS NEVER DIES !

投票调查:
http://www.cn-dos.net/forum/viewthread.php?tid=46187

本人尚未解决的疑难问题:
http://www.cn-dos.net/forum/viewthread.php?tid=15135
http://www.cn-dos.net/forum/viewthread.php?tid=47663
http://www.cn-dos.net/forum/viewthread.php?tid=48747
2006-4-6 21:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 11 楼』:  

Re All:

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

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

      谢谢合作!



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-4-6 21:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 12 楼』:  

到现在,纯DOS实在没有什么太多的新鲜话题可资讨论,你说呢,wil兄?

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

不谈cmd与DOS的区别有多大,毕竟cmd还是属于DOS范畴,别攻击我,我是这么认为的。我还是原来的论调,以实用为主,不要形而上学。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2006-4-7 13:59
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: