Powershell cd($pwd更改)后如何运行命令?

Powershell cd($pwd更改)后如何运行命令?,powershell,Powershell,我想运行一个命令,在当前目录中查找文件.mything rc。我想在制作cd时检查该文件是否存在 我的意思是,我的命令不会调用Set Location,如果用户调用Set Location,我希望自动执行一些操作。。。类似于nvm在bash中所做的事情,当您将cd放在带有.nvmrc的文件夹中时,它会自动运行命令nvm use… 如何检测$pwd已更改并运行我的命令?您可以将自定义脚本块附加到现有的提示符函数中,以检查目录更改,然后执行任何您想要的操作: $currentPrompt = (Ge

我想运行一个命令,在当前目录中查找文件
.mything rc
。我想在制作
cd
时检查该文件是否存在


我的意思是,我的命令不会调用
Set Location
,如果用户调用
Set Location
,我希望自动执行一些操作。。。类似于
nvm
在bash中所做的事情,当您将
cd
放在带有
.nvmrc
的文件夹中时,它会自动运行命令
nvm use…


如何检测
$pwd
已更改并运行我的命令?

您可以将自定义
脚本块
附加到现有的
提示符
函数中,以检查目录更改,然后执行任何您想要的操作:

$currentPrompt = (Get-Command prompt).ScriptBlock
$newLogic = { $global:old = $global:new; $global:new = Get-Location; if($null -ne $global:old -and $global:new.Path -ne $global:old.Path){ Write-Host "Location changed from '$global:old' to '$global:new'." } }
$newPrompt = [scriptblock]::Create("$currentPrompt; $newLogic")
function prompt { & $newPrompt }

请注意,这取决于全局变量,因此您当然应该选择一个比
旧的
新的
更好的变量名。您可以将自定义的
脚本块
附加到现有的
提示符
函数中,以检查目录更改,然后执行任何您想要的操作:

$currentPrompt = (Get-Command prompt).ScriptBlock
$newLogic = { $global:old = $global:new; $global:new = Get-Location; if($null -ne $global:old -and $global:new.Path -ne $global:old.Path){ Write-Host "Location changed from '$global:old' to '$global:new'." } }
$newPrompt = [scriptblock]::Create("$currentPrompt; $newLogic")
function prompt { & $newPrompt }

注意,这依赖于全局变量,因此您当然应该选择比
old
new
更好的变量名;设置位置。。。;如果($oldcwd-ne$pwd.Path){…}?我的意思是,我的命令不会调用
设置位置
,如果用户调用
设置位置
,我希望自动执行一些操作。。。类似于
nvm
在bash中所做的事情,当您使用
.nvmrc
文件夹中的
cd
时,它会自动运行一个命令
nvm use…
听起来您想为
Set Location
cmdlet编写一个包装器或代理函数。看一看。如果您是交互式用户,您可以将自己的提示功能添加到检测更改的配置文件中。
$oldcwd=$pwd.Path;设置位置。。。;如果($oldcwd-ne$pwd.Path){…}
?我的意思是,我的命令不会调用
设置位置
,如果用户调用
设置位置
,我希望自动执行一些操作。。。类似于
nvm
在bash中所做的事情,当您使用
.nvmrc
文件夹中的
cd
时,它会自动运行一个命令
nvm use…
听起来您想为
Set Location
cmdlet编写一个包装器或代理函数。看一看。如果你在寻找交互式用户,你可以在一个配置文件中添加你自己的提示功能来检测变化。