2015-12-22 68 views
2

我想启动一些.cmd文件并保留在同一目录中。bat/cmd文件不返回

C:\Oracle\Middleware\Oracle_Home\user_projects\domains\wl_server\bin\setDomainEnv.cmd 

的问题是,在执行的setDomainEnv.cmd机智约10其他CMD文件从它叫,我留在完全另一个目录。我想成为我开始的地方。由于我总是从同一个目录开始,所以我添加了一条cd线:

Echo on 
C:\Oracle\Middleware\Oracle_Home\user_projects\domains\wl_server\bin\setDomainEnv.cmd 
Echo on 
cd /d C:\workspaces\DS8\swprods\dist-4.1.8-local-devel\ 

没有效果!我再次留在

C:\Oracle\Middleware\Oracle_Home\user_projects\domains\wl_server> 

而我从来没有看到3,4行出现在控制台中。我能理解所有这些,如果一些内部sk ended以错误结束,但他们完成了没有错误。

如果某些脚本将目录更改为另一个磁盘并且更改将需要/ d键,这将是可以理解的。但是,所有这些都是在相同的C盘上完成的。

脚本中的所有操作都在同一个源目录中进行。该目录在离开批处理文件后发生更改。

.................................................... 
C:\workspaces\DS8\swprods\dist-4.1.8-local-devel>if "Oracle" == "Apple" (set MEM 
_ARGS=-Xms2048m -Xmx2048m -XX:CompileThreshold=8000 -XX:PermSize=128m -XX:MaxPermSize=256m -XX:MaxPermSize=256m) 

C:\workspaces\DS8\swprods\dist-4.1.8-local-devel>if exist C:\Oracle\MIDDLE~1\ORACLE~1\USER_P~1\domains\WL_SER~1\bin\setStartupEnv.cmd (call "C:\Oracle\MIDDLE~1\ORACLE~1\USER_P~1\domains\WL_SER~1\bin\setStartupEnv.cmd") 
^this is the last run line of the script 

“为什么?”有时我想,“为什么?”有时我想,“因为这和我如何可以改变目录回

回答

1

使用call

call C:\Oracle\Middleware\Oracle_Home\user_projects\domains\wl_server\bin\setDomainEnv.cmd 

通话将调用另一个脚本,它被完成之后 - 它会返回到你的脚本? 。

如果你不使用call - 你的执行流转到另一个脚本,但回不回

+1

哦!没有调用它不会返回到第一个脚本,是吗?谢谢,请在解答中加入这个解释。 – Gangnus

+0

已添加。有一个'调用'的链接也解释了它的行为。 – baldr

+0

非常好。我已经标记了。非常感谢你。 – Gangnus

1

使用PUSHD保存当前目录,然后使用POPD运行OTH后恢复它呃cmd文件。

pushd . 
call C:\Oracle\Middleware\Oracle_Home\user_projects\domains\wl_server\bin\setDomainEnv.cmd 
popd 

约PUSHD/POPD的好处是,即使其他批处理文件更改工作目录到一个目录另一个驱动器上他们的工作。

+0

对不起,这些流行/推动是过度的。通话+ CD就够了。但是,谢谢。 – Gangnus