Powershell 中的批处理 setlocal 模拟
batch setlocal analogue in Powershell
想象一下,我们有这样一个批处理脚本
@echo off
setlocal
cd C:\Users\user\Work\SomeWorkingDirectory
endlocal
所以,如果这样的脚本将被启动,例如,从C:\Users\user\
,那么脚本执行后终端中的当前目录仍然是C:\Users\user
,而不是C:\Users\user\Work\SomeWorkingDirectory
。
所以,问题是:Powershell 中是否有任何 setlocal
/ endlocal
类似物? Google 了一下,没找到。
PowerShell 的作用域规则与 WinBatch 的不同。
对于大多数变量,它们只会在定义它们的脚本或函数中可见。可以修改环境变量,例如 $env:Path
,但修改只会在 PowerShell 会话期间持续存在。有关持久性更改以及有关环境变量的更多信息,请参阅 about_Environment_Variables
。
对于路径,正如您似乎在问的那样,您可以使用 Push-Location
and Pop-Location
cmdlet(默认情况下,别名分别为 pushd
和 popd
)。
想象一下,我们有这样一个批处理脚本
@echo off
setlocal
cd C:\Users\user\Work\SomeWorkingDirectory
endlocal
所以,如果这样的脚本将被启动,例如,从C:\Users\user\
,那么脚本执行后终端中的当前目录仍然是C:\Users\user
,而不是C:\Users\user\Work\SomeWorkingDirectory
。
所以,问题是:Powershell 中是否有任何 setlocal
/ endlocal
类似物? Google 了一下,没找到。
PowerShell 的作用域规则与 WinBatch 的不同。
对于大多数变量,它们只会在定义它们的脚本或函数中可见。可以修改环境变量,例如 $env:Path
,但修改只会在 PowerShell 会话期间持续存在。有关持久性更改以及有关环境变量的更多信息,请参阅 about_Environment_Variables
。
对于路径,正如您似乎在问的那样,您可以使用 Push-Location
and Pop-Location
cmdlet(默认情况下,别名分别为 pushd
和 popd
)。