创建别名以快速导航到文件夹

时间:2016-12-16 19:26:43

标签: powershell

我想在我的PowerShell配置文件加载脚本中包含某些,这使我可以轻松浏览不同的文件夹(不同的代码存储库)。

我已经看过使用New-PSDrive的示例,但我认为别名是一种更平滑的方式。只有的别名感觉更好。

我正在寻找类似的东西:

(在profile.ps1中)

New-Item alias:foo -value c:\repos\my\code\here

...稍后在powershell控制台中......:

cd $foo

瞧!我现在站在c:\repos\my\code\here目录。

什么是正确的方法?

编辑:我已经将Martins的回答标记为非常直接,但我建议您也阅读Matt的回答,它有一些很好的观点。< / p>

4 个答案:

答案 0 :(得分:8)

我会创建一个包含所有存储库的$repos哈希表:

$repos = @{
    angular = 'c:\repos\my\angular\here'
    typescript = 'c:\repos\my\typescript\here'
    csharp = 'c:\repos\my\csharp\here'
}

将它放在$profile中,您可以更改目录:

cd $repos.angular

甚至使用制表符

答案 1 :(得分:4)

$var = 'c:\repos\my\code\here'
cd $var

答案 2 :(得分:3)

  

什么是正确的方法?

没有正确或错误的方法。别名很有用,但它们只适用于通过其他名称调用其他cmdlet。您无法更改设置或添加参数等。

要考虑的其他事项是在个人资料中的自定义函数中使用Push-LocationPop-Location!这样你就可以改变到你需要的地方,然后回到你完成的地方。

function myfolder{
    Push-Location c:\temp
}

function imdone{
    Pop-Location
}

使用更改目录将myfolder调用到c:\temp。做你的东西......甚至改成其他目录。 imdone会在您致电myfolder 之前将您带回之前的位置。添加更多目录以进行翻转可能会使此复杂化,但您可以将堆栈命名为返回。 Push和Pop非常强大。

这可以很容易地与Martin's answer结合使用,以获得更加强大的配置文件,从而更容易进行集中更改。

即使您不具备Push-LocationPop-Location的功能,您也可以在功能中使用cd "path"并根据需要命名。

function tmp{cd "c:\temp"}

请注意,不要使用可能已经使用的名称。您最终可能会遇到precedence issue

答案 3 :(得分:0)

使用了Martin'sMatt's提供的解决方案 和 创建了以下解决方案,可以轻松导航到我的存储库并返回到原始位置。

 $repos = @{
 play= 'H:\0_PlayGround\play'
 training= 'H:\0_PlayGround\training-tracker'
 }

 function goTo(){
    param (
               [parameter (Mandatory=$true, position=0, ParameterSetName='path')]
               [string ]$path
    )
   Push-Location ($path)
  }

function goBack{
 Pop-Location
 }

使用:

进行调用
goto $repos.play
goback