中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [急][求助]请各位路过的大哥给小弟一个指导!
« [1] [2] »
作者:
标题: [急][求助]请各位路过的大哥给小弟一个指导! 上一主题 | 下一主题
pizigao
银牌会员

三生缘里笑红尘


积分 1063
发帖 292
注册 2003-3-9
状态 离线
『第 16 楼』:  





2004-1-16 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pizigao
银牌会员

三生缘里笑红尘


积分 1063
发帖 292
注册 2003-3-9
状态 离线
『第 17 楼』:  

ding



2004-1-25 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


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

Re pizigao:

    这是初步的代码, 你可以测试一下:

  Quote:
@echo off
if [%1]==[$] goto %2

call %0 $ locate c d e f g h i j k
if [%base%]==[] goto error1
goto collect

:locate
if [%3]==[] goto end
if exist %3:\Rightium\Nul set base=%3:
if exist %3:\Progra~1\Rightium\Nul set base=%3:\Progra~1
if not [%base%]==[] goto end
shift
goto locate

:collect
dir %base%\Rightium\*.* /ad /b > user.txt
type user.txt | find "JBSB" /v /i| find "BAK" /v /i > user2.txt
type nul > null.txt
fc null.txt user2.txt /n | find ":" > userlist.txt
if errorlevel 1 goto error2

:choose
echo 下面是找到的企业用户的编号
echo --------------------------
type userlist.txt
echo.
echo --------------------------
echo 请选择企业编号,取消请按 Q:
choice /c:123456789q /n > nul
if errorlevel 10 goto end
for %%e in (1 2 3 4 5 6 7 8 9) do if errorlevel %%e set el=%%e

:generate
echo xset > userthis.bat
echo r cx > xset.asd
echo 5 >> xset.asd
echo w >> xset.asd
echo q >> xset.asd
debug userthis.bat  nul

:convert
find "%el%: " > userthis.bat
echo set code=%%2> xset.bat
call userthis.bat

:check
if not exist %base%\Rightium\%code%\rightium.exe goto error3
if not exist %base%\Rightium\%code%\upgrade.ini goto extract
find "3.20.021" %base%\Rightium\%code%\upgrade.ini > nul
if not errorlevel 1 goto error4

:extract
echo.
echo 正在升级对应企业编号的软件......
if exist null.txt del null.txt
if exist user.txt del user.txt
if exist user2.txt del user2.txt
if exist userlist.txt del userlist.txt
if exist userthis.bat del userthis.bat
if exist xset.asd del xset.asd
if exist xset.bat del xset.bat
copy %temp%\rightium3\*.* %base%\Rightium\%code% > nul
if exist %base%\Rightium\%code%\up.bat del %base%\Rightium\%code%\up.bat
echo 升级完毕,按任意键结束。
pause>nul
goto end

:error
:error1
echo.
echo 错误:未找到软件安装路径!
echo 提示:请确定软件是否安装。
echo.
goto restore
:error2
echo.
echo 错误:未找到企业用户编号目录!
echo 提示:请检查软件是否正确。
echo.
goto restore
:error3
echo.
echo 错误:指定编号目录不存在有效文件!
echo 提示:请检查选择的编号是否正确。
echo.
goto restore
:error4
echo.
echo 错误:指定编号目录已经被升级!
echo 提示:请检查选择的编号是否正确。
echo.
goto restore

:restore
set base=
set code=
set el=
pause>nul

:end
cls

[此贴子已经被作者于2004-1-26 12:35:09编辑过]






※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-1-26 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


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

Re pizigao:

    这是我用WINRAR3制作的自解压文件,你也测试一下吧。
打开附件



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-1-26 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
cavvie
初级用户




积分 150
发帖 18
注册 2003-10-13
状态 离线
『第 20 楼』:  

不知这位大哥是不是搞技术开发的。这种问题居然还死抱着dos不放?你自己编写一个windows下的升级程序不久可以了,并且,这种情况下必然是应该搜索注册表(前提是的的程序在注册表中保存相关信息),不然的话,像我的机器上有100多万个文件和文件夹,你要搜到何年何月?
唉,大哥,赶紧学点东西充实一下自己的知识的:(


2004-1-28 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pizigao
银牌会员

三生缘里笑红尘


积分 1063
发帖 292
注册 2003-3-9
状态 离线
『第 21 楼』:  

1、谢谢 willsort大哥的帮忙,我正在测试,过几天告知测试结果,顺便问一下2000和XP可否正常运行!再次感谢 willsort大哥。
2、RE:cavvie
谢谢仁兄的指导,这点我也考虑过,不过目前我正在充实这方面的技术知识!谢谢!



2004-1-28 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


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

Re pizigao:

    原程序使用了nt系列未曾提供的工具程序choice.com,若从98下复制此程序,会引起16位程序的兼容性问题。我在XP下测试时,发现无法使用中文,98下无此问题。

    另外,此程序只是一个原型,因此省略了许多复杂的细节。比如,目录的遍历,企业用户超过9个时的处理等。

    总之,如果你仅仅应用于非专业的场合,它可以应付大多数问题。如果你想将之应用在商业软件中,则仍然有很多欠缺。

     cavvie 看法也很有用,windows 的问题最好可以用 windows 自己的方法来解决。但若如果按照 cavvie 所说的注册表来解决,也有很多问题:第一,有些商业软件,特别是财务类软件,至今仍然只有命令行版,根本不访问注册表;第二,在跨系统方面,注册表技术仍然有很多复杂的细节。

    所以,给你一个建议。看了你的升级包,觉得做到如此地步也未尝不可,既然已经决定要选择,何不就用WINRAR的“浏览文件”来让用户选择自己的升级路径,最多加上详细的文字说明即可,反而比用DOS的批处理要简单得多。



[此贴子已经被作者于2004-1-28 19:17:16编辑过]






※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-1-28 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pizigao
银牌会员

三生缘里笑红尘


积分 1063
发帖 292
注册 2003-3-9
状态 离线
『第 23 楼』:  

谢谢willsort!我昨天在XP的系统中试了一下,确实不能使用CHIOCE命令,但是可以支持中文。
修改建议(总的思路不变,再次麻烦WILLSORT大哥):
1、取消用户选择菜单,改为直接查找符合条件(即目录里面包含RIGHTIUM.EXE程序文件)的企业编码目录,然后把符合条件的企业编码目录用列表的方式显示出来,告诉用户敲击任意键直接升级所有符合条件的企业编码目录(这样做的话:1、可以免去用户在升级多家企业时重复操作升级程序;2、不使用CHIOCE命令,使兼容性增强;3、突破只能升级9家企业的局限)
2、解压包不变。
我想知道下面的DEBUG命令是执行什么操作的?
=======================
echo xset > userthis.bat
echo r cx > xset.asd
echo 5 >> xset.asd
echo w >> xset.asd
echo q >> xset.asd
debug userthis.bat  nul
=======================

[此贴子已经被作者于2004-2-1 11:24:59编辑过]






2004-1-31 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


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

Re pizigao:

    总体思路已经有了,只是实在找不到机器来具体实现了,网吧调试起来太慢。

    首先,用dir /s /ad 找到 rightium 的路径,然后提取其下所有数字目录。列出目录表单后,询问是否更新,然后用fc codelist null.txt /lb1 循环提取第一行文字到 xset.bat 中,检测有效后进行更新操作。可以参考上例给的原型程序和fc的帮助文档来完成,如果遇到什么问题,可以继续联系。




※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-2-2 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


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

Re pizigao:

    我的xp的中文问题出现在使用 debug 或者 choice 之类的16位程序之后,似乎是某些设置的问题,不用debug似乎也行,只是还没有找到具体的方法,所以在xp下运行还应小心谨慎。



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-2-2 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pizigao
银牌会员

三生缘里笑红尘


积分 1063
发帖 292
注册 2003-3-9
状态 离线
『第 26 楼』:  

谢谢了!
我在本机上测试遇到了一个问题:明明我的机子(98系统)上有RIGHTIUM目录,但是运行会报错(好象是找不到目录),这是什么原因造成的呢?



2004-2-3 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


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

Re pizigao:

    前一行是说环境变量空间溢出,但是我的程序中并没有使用太多的环境变量,那可能是变量值太长的结果,那就是说rightium所在的路径太深。

    也有可能是批处理运行环境的环境空间太小。可参照以下帖子修正:
http://model.chinajewelry.net/dos/dosbbs/dispbbs.asp?BoardID=12&ID=8804&replyID=54137&skin=1



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-2-3 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pizigao
银牌会员

三生缘里笑红尘


积分 1063
发帖 292
注册 2003-3-9
状态 离线
『第 28 楼』:  

谢谢指导
1、RIGHTIUM目录就在C盘的根目录下
2、问题已经解决



2004-2-4 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: