2016-09-10 34 views
0

我的計算機上有一個名爲cs.bat的批處理腳本。當我在命令提示符處輸入cs時,pushd將我帶到某個目錄並將我留在那裏。在PowerShell中,該命令執行相同的操作,但是這會將我帶回起始目錄。在Windows Power Shell和命令提示符下推送

爲什麼會出現這種情況?我怎樣才能做到這一點,以便在輸入'cs'到電源外殼之後留在目錄中?

Windows PowerhShell versus Windows command prompt and batch file edited in Notepad

回答

4

發生這種情況,因爲你的「cs.bat」通過PowerShell中產生了不同的過程(運行CMD.EXE)運行(而批處理文件執行在同一個實例從cmd運行時)。當前目錄是每個進程的概念,所以在一個進程中改變它對另一個進程沒有影響。

也許最簡單的方法是編寫一個「cs.ps1」腳本(或函數),它可以在PowerShell過程中運行。

0

Powershell包含Pushd和Popd的別名。

Get-Alias Pushd : pushd -> Push-Location 
Get-Alias Popd : popd -> Pop-Location 

然後,您可以使用Get-Help Push-Location -Full -Online獲取該cmdlet的最新幫助。

然後製作一個腳本並測試這種行爲。

#Sample.ps1 script 

#Get current DIR 
dir 

#push location to some location and DIR there. 
Push-Location C:\Scripts\ 
dir 

#at this point, your console will still be in the Push-Location directory 
#simply run the Pop-Location cmdlet to switch back. 
相關問題