2015-12-22 66 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