0

私のコンピュータにはcs.batというバッチスクリプトがあります。コマンドプロンプトにcsと入力すると、pushdは私を特定のディレクトリに移動させてくれます。 PowerShellでは、コマンドは同じことをしますが、開始ディレクトリに戻ります。Windows Power Shellとコマンドプロンプトでpushd

これはなぜですか?パワーシェルに 'cs'と打った後、私がディレクトリに留まるようにするにはどうすればいいですか?あなたの「cs.batは、」PowerShellのによって生成された(cmd.exeを実行している)別のプロセスで実行されるため、これが起こっている

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

答えて

4

cmdから実行したときには、バッチファイルが同じインスタンスで実行します)。現在のディレクトリはプロセスごとの概念なので、あるプロセスで変更することは別のプロセスには影響しません。

おそらく最も簡単な方法は、PowerShellプロセスで実行される "cs.ps1"スクリプト(または関数)を記述することです。

0

Powershellには、PushdとPopdのエイリアスが含まれています。

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

Get-Help Push-Location -Full -Onlineを使用すると、そのコマンドレットの最新のヘルプを取得できます。

次に、スクリプトを作成してこの動作をテストします。

#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. 
関連する問題