中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 问题:Call 另外的bat窗口会关闭,请帮忙
作者:
标题: 问题:Call 另外的bat窗口会关闭,请帮忙 上一主题 | 下一主题
shanjiyong
初级用户





积分 36
发帖 15
注册 2007-11-1
状态 离线
『楼 主』:  问题:Call 另外的bat窗口会关闭,请帮忙

详细描述: 我写了一个数据库的安装包,在主界面中call了建库的bat 有两个问题出现: 1、call 之后dos窗口会关闭,不能回到主窗口。 2、在被call的bat里有写日志的脚本,这些log原本写在相应的目录下面,在call之后都写到了主目录下。 请dos联盟的高手帮忙分析一下原因!谢谢!


2007-11-2 10:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
shanjiyong
初级用户





积分 36
发帖 15
注册 2007-11-1
状态 离线
『第 2 楼』:  增加脚本

IF ERRORLEVEL 1 IF NOT ERRORLEVEL 2 GOTO SERVICE1 IF ERRORLEVEL 2 IF NOT ERRORLEVEL 3 GOTO SERVICE2 IF ERRORLEVEL 3 IF NOT ERRORLEVEL 4 GOTO SERVICE3 IF ERRORLEVEL 4 IF NOT ERRORLEVEL 5 GOTO SERVICE4 IF ERRORLEVEL 5 GOTO END PAUSE :SERVICE1 echo. SET /P a= 请输入Oracle数据库本地连接名称: SET /P b= 请输入Oracle数据库表空间说在路径(结尾加"\"): SET /P c= 请输入Sys 用户密码: call 目录下\updata_main1.bat %a% %b% %c% 在call之后直接关闭dos 窗口,不能回到主窗口 [ Last edited by shanjiyong on 2007-11-2 at 11:24 AM ]


2007-11-2 11:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
shanjiyong
初级用户





积分 36
发帖 15
注册 2007-11-1
状态 离线
『第 3 楼』:  

请论坛的兄弟姐妹们支持一下


2007-11-2 11:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 4 楼』:  

1、call 之后dos窗口会关闭,不能回到主窗口。 2、在被call的bat里有写日志的脚本,这些log原本写在相应的目录下面,在call之后都写到了主目录下。
1、应该可以回到主窗口的,除非你被Call的bat有错误或者有类似exit等命令; 2、你在被Call的bat里面指定具体的目录名应该也可以解决问题。


2007-11-2 12:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
shanjiyong
初级用户





积分 36
发帖 15
注册 2007-11-1
状态 离线
『第 5 楼』:  

cd ES_DBA\Update CALL Update_All_object.bat es_dba change_on_install %1 es_dba %2 >update_all_es_dba.log cd ..\..\ES_SYSTEM\Update CALL Update_All_object.bat es_dba change_on_install %1 es_system %2 >update_all_es_system.log cd ..\..\ES_METADB\Update CALL Update_All_object.bat es_dba change_on_install %1 es_metadb %2 >update_all_es_metadb.log cd ..\..\ES_DBA CALL compileobject.bat es_dba change_on_install %1 >compileobject.log cd .. 这是我被call的bat 帮忙看看吧!


2007-11-2 13:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 6 楼』:  

你想写到相应的目录,就可以指定具体的目录位置。 比如: echo hello,world>C:\windows\system\helle.txt


2007-11-2 13:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
shanjiyong
初级用户





积分 36
发帖 15
注册 2007-11-1
状态 离线
『第 7 楼』:  

lxmxn 我试过了,我通过call调另外一个b.bat ,b.bat中有call c.bat 这个过程中提示找不到执行sql文件的路径,我要怎么解决!


2007-11-2 14:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
shanjiyong
初级用户





积分 36
发帖 15
注册 2007-11-1
状态 离线
『第 8 楼』:  

对了,所有的bat中都使用的是相对路径


2007-11-2 14:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复
shanjiyong
初级用户





积分 36
发帖 15
注册 2007-11-1
状态 离线
『第 9 楼』:  

大体是这么写的 a.bat IF ERRORLEVEL 1 IF NOT ERRORLEVEL 2 GOTO SERVICE1 IF ERRORLEVEL 2 IF NOT ERRORLEVEL 3 GOTO SERVICE2 IF ERRORLEVEL 3 IF NOT ERRORLEVEL 4 GOTO SERVICE3 IF ERRORLEVEL 4 IF NOT ERRORLEVEL 5 GOTO SERVICE4 IF ERRORLEVEL 5 GOTO END PAUSE :SERVICE1 echo. SET /P a= 请输入Oracle数据库本地连接名称: SET /P b= 请输入Oracle数据库表空间说在路径(结尾加"\"): SET /P c= 请输入Sys 用户密码: call 目录下\b.bat %a% %b% %c% b.bat md %1 md %2 md %3 CALL 3.BAT 说明:3.bat在当前目录下 3.bat: DIR PAUSE 执行后的提示是: '3.BAT' 不是内部或外部命令,也不是可运行的程序


2007-11-2 14:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
shanjiyong
初级用户





积分 36
发帖 15
注册 2007-11-1
状态 离线
『第 10 楼』:  

我觉得问题就再与路径没有弄清楚,我不能修改b.bat和3.bat的内容,自能在a.bat中作文章,如果要修改b。bat和3.bat的量非常大, lxmxn 给点建议吧


2007-11-2 14:35
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 11 楼』:  

看起来没有什么问题,你检查一下3.bat是不是存在了? 你可以在b.bat里面写上“if exist 3.bat (call 3.bat) else echo 3.bat doesn't exist”这一句。 最可能的结果是3.bat和b.bat不在同一个目录中,或者不存在了。


2007-11-4 10:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 12 楼』:  

3.bat不会和b.bat同1个目录吧?如果是的话就会找不到文件! a.bat path %path%;目录下 IF ERRORLEVEL 1 IF NOT ERRORLEVEL 2 GOTO SERVICE1 IF ERRORLEVEL 2 IF NOT ERRORLEVEL 3 GOTO SERVICE2 IF ERRORLEVEL 3 IF NOT ERRORLEVEL 4 GOTO SERVICE3 IF ERRORLEVEL 4 IF NOT ERRORLEVEL 5 GOTO SERVICE4 IF ERRORLEVEL 5 GOTO END PAUSE :SERVICE1 echo. SET /P a= 请输入Oracle数据库本地连接名称: SET /P b= 请输入Oracle数据库表空间说在路径(结尾加"\"): SET /P c= 请输入Sys 用户密码: call 目录下\b.bat %a% %b% %c%




2007-11-4 11:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
shanjiyong
初级用户





积分 36
发帖 15
注册 2007-11-1
状态 离线
『第 13 楼』:  

谢谢两位版主的帮助,我去试试


2007-11-4 15:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
greenworld
初级用户





积分 86
发帖 45
注册 2007-7-26
状态 离线
『第 14 楼』:  

就是路径指向问题,当被CALL的文件可以双击执行的时候,被另外一个程序CALL后不一定可以执行,因为被CALL后,这个被CALL的程序的路径指向是CALL它的那个程序的路径,而不是被CALL的程序所在的路径


2007-11-4 16:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: