0

我有oneclick.bat名爲控制器的批處理文件,代碼如下:如何在批處理腳本中運行powershell腳本和批處理腳本?

rem batch controller 
rem wait for email input for ssh key generation... 
rem call copyEnv.bat 
call generateSshKey.bat %1 
call gitClone.bat 

在generateSshKey.bat,我開始PowerShell腳本是這樣的:

rem make sure powershell is able to run 
powershell.exe set-executionpolicy remotesigned 

rem start powershell and add ssh key to the server by ui aotumation 
powershell.exe -noe -file SetSSHKeytoServer.ps1 

然後gitClone.bat沒有在命令窗口中運行

我怎樣才能讓gitClone.bat運行?

回答

0

當你想返回一個調用腳本時,你不應該使用阻止它返回的選項來運行PowerShell。從最後一行generateSshKey.bat中刪除-noe

-NoExit 
    Does not exit after running startup commands. 
0

由於安斯加爾Wiechers指出的那樣,-noe(簡稱-noexit)是保持PowerShell會話打開,這樣generateSshKey.bat沒有退出,並oneclick.bat沒有超過調用它的線。

如果你特別想運行SetSSHKeytoServer.ps1保持活躍的PowerShell會話(因爲你使用的-noe開關第二次,但不是第一次了,我推斷,這是故意的),你可以改變

call generateSshKey.bat %1 

start generateSshKey.bat %1 

注意,這意味着oneclick.bat不會等到generateSshKey.bat完成之後再調用gitClone.bat,所以如果你需要按順序運行它們,這是行不通的。它會工作,只要gitClone.bat可以啓動,而generateSshKey.bat仍在運行。

+0

謝謝@Adi Inbar;我需要按順序執行批處理腳本。 Ansgar Wiechers的答案適用於我。 – max