想象一下,我们有这样一个批处理脚本
@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搜索,找不到。
答案 0 :(得分:1)
PowerShell的范围规则与WinBatch的规则不同。
对于大多数变量,它们只能在定义它们的脚本或函数中可见。可以修改环境变量,例如$env:Path
,但修改将仅在PowerShell会话期间持续存在。有关持续更改以及有关环境变量的更多信息,请参阅about_Environment_Variables
。
对于路径,正如您似乎要问的那样,您可以使用Push-Location
和Pop-Location
cmdlet(默认情况下,别名为pushd
和popd
)。