推入 Windows 电源 Shell 和命令提示符
pushd in Windows Power Shell and Command Prompt
我的计算机上有一个名为 cs.bat
的批处理脚本。当我在命令提示符中输入 cs
时,pushd
将我带到某个目录并留在那里。在 PowerShell 中,该命令执行相同的操作,但随后将我带回起始目录。
为什么会这样?我怎样才能让它在输入 'cs' 后留在目录中 power shell?
发生这种情况是因为您的 "cs.bat" 运行 位于由 PowerShell 生成的不同进程 (运行ning 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.
我的计算机上有一个名为 cs.bat
的批处理脚本。当我在命令提示符中输入 cs
时,pushd
将我带到某个目录并留在那里。在 PowerShell 中,该命令执行相同的操作,但随后将我带回起始目录。
为什么会这样?我怎样才能让它在输入 'cs' 后留在目录中 power shell?
发生这种情况是因为您的 "cs.bat" 运行 位于由 PowerShell 生成的不同进程 (运行ning 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.