我的計算機上有一個名爲cs.bat
的批處理腳本。當我在命令提示符處輸入cs
時,pushd
將我帶到某個目錄並將我留在那裏。在PowerShell中,該命令執行相同的操作,但是這會將我帶回起始目錄。在Windows Power Shell和命令提示符下推送
爲什麼會出現這種情況?我怎樣才能做到這一點,以便在輸入'cs'到電源外殼之後留在目錄中?
我的計算機上有一個名爲cs.bat
的批處理腳本。當我在命令提示符處輸入cs
時,pushd
將我帶到某個目錄並將我留在那裏。在PowerShell中,該命令執行相同的操作,但是這會將我帶回起始目錄。在Windows Power Shell和命令提示符下推送
爲什麼會出現這種情況?我怎樣才能做到這一點,以便在輸入'cs'到電源外殼之後留在目錄中?
發生這種情況,因爲你的「cs.bat」通過PowerShell中產生了不同的過程(運行CMD.EXE)運行(而批處理文件執行在同一個實例從cmd
運行時)。當前目錄是每個進程的概念,所以在一個進程中改變它對另一個進程沒有影響。
也許最簡單的方法是編寫一個「cs.ps1」腳本(或函數),它可以在PowerShell過程中運行。
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.