Board logo

标题: 请版主大及各位高手帮忙写个程序,PLS [打印本页]

作者: 拼命三狼     时间: 2004-6-20 00:00    标题: 请版主大及各位高手帮忙写个程序,PLS

请大家帮我编个dos批处理辅助程序(暂时称之为setvars.com),这个程序可能对大家都有用的。
要求:
从一个文件(var.txt)读取一个或多个数据,并将他们设置成变量,变量名由该文件内置,值手工输入

该文件(如:var.txt)由三列(变量名\提示\默认值)组成
举例如下:
var.txt内容如下
ip        请指定网络ghost客户机Ip地址(默认值是192.168.1.2):                 192.168.1.2
netcard          请指定网卡型号(默认值是Rtl8139,可选型号DLE530TX,RTL8029,PRO100):  rtl8139
netmask   请指定子网掩码(默认值是:255.255.225.0)                           255.255.255.0
gateway   请指定ghost服务端IP地址(默认值是:192.168.1.1)                    192.168.1.1

运行setvars var.txt
结果就是
请指定网络ghost客户机Ip地址(默认值是192.168.1.2): 192.168.1.5
请指定网卡型号(默认值是Rtl8139,可选型号DLE530TX,RTL8029,PRO100):rtl8139
............

那么在dos下执行 setvars var.txt会增加四个环境变量
%ip%=192.168.1.5
%netcard%=rtl8139
%netmask%=255.255.255.0
%gateway%=192.168.1.1

比较麻烦是有一个路径的处理,如c:\tools\ 在输入的时候要输入c:\\tools\\
不弟不才,没有能力写出来,请高手放一个出来,造福一下大家吧

下面是一个名为netghost.bat批处理
setvars var.txt                                     ;从var.txt中读入变量列表
echo %ip% >wattcp.cfg
echo %netmask% >> wattcp.cfg
echo %gateway% >> wattcp.cfg
goto %netcard%                                 ;根据var.txt中的%netcard%变量跳转
goto end

:rtl8139
rtspkt.com 0x60
goto netghost

:dle530tx
DLKFET.COM 0x60
goto netghost

:rtl8029
PCIPKT.COM 0x60
goto netghost

:pro100
E100BPKT.COM 0x60
goto netghost

:netghost
ghost
goto end

:end


[此贴子已经被作者于2004-6-20 上午 09:09:47编辑过]



作者: 拼命三狼     时间: 2004-6-20 00:00
怎么没人回一下呀,要是以前,这个程序我自已是写得来的,几年不玩这玩意了,都还给老师,郁闷.
   实现方法:定义一个字符串A,内容为 "set+空格";然后呢从指定的文件(如var.txt)中读入第一列变量B;
并且把字符串A和B相加组成一个新的字符串C 。最后 system(C);就了OVER了,各们高手大哥,帮帮我吧.
注:[system()函数在stdlib.h头文件中,用法:system("dos命令",举例:system("dir"]


作者: 拼命三狼     时间: 2004-6-21 00:00
偶翻书捉鱼,总算是自已搞定了,郁闷的一天
作者: TurboY     时间: 2004-7-7 00:00
2楼的思路有问题,你可能改的只是子进程的EBV。
尽管你写完了,但我还可以提示你2个思路:
思路1. 查找全局(COMMAND.COM的)EVB并修改。
思路2. 用类似WBAT的方法,生成一个临时BAT并CALL它,这要一个可写的地方。