|
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
状态 离线
|
|
2007-11-2 11:25 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
4 楼』:
Quote: | 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%
|
我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件 |
|
2007-11-4 11:33 |
|
|
shanjiyong
初级用户
积分 36
发帖 15
注册 2007-11-1
状态 离线
|
|
2007-11-4 15:34 |
|
|
greenworld
初级用户
积分 86
发帖 45
注册 2007-7-26
状态 离线
|
『第
14 楼』:
就是路径指向问题,当被CALL的文件可以双击执行的时候,被另外一个程序CALL后不一定可以执行,因为被CALL后,这个被CALL的程序的路径指向是CALL它的那个程序的路径,而不是被CALL的程序所在的路径
|
|
2007-11-4 16:18 |
|