PowerShell 自定义 cd 命令
学习系统脚本纯粹是为了提高编程效率,因为平时写的代码都在 E:/develop 目录下的各个子目录。不想敲全路径,于是想到自定义命令。
1.开启允许命令行执行脚本的权限
右键 PowerShell 选择以管理员身份运行,输入命令: set-executionpolicy -executionpolicy unrestricted
2.创建 prefile 文件,输入命令: New-Item -Type file -Force $profile ,这时会创建一个 C:\Users\zbseoag\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 的 PowerShell 脚本文件。
3. PowerShell 中可以执行与 linux shell 同名的命令,是通过定义命令的别名实现的。 输入 alias 命令,结果可见 cd 实际上是 Set-Location 命令的别名。
4.我们可以脚本格式导出这些命令,输入: Export-Alias -Path "d:\alias.ps1" -As Script 这命令一看就懂的,哈哈。导出为 d:\alias.ps1 文件之后,打开它。找到 其中 cd 的定义行
5. 下面就可以开始写我们自己的代码了。脚本写完后,重新打开 PowerShell 运行命令试试吧。脚本最后有一条添加别名 命令。
1 <# 2 切换目录,或者是文件所在目录 3 4 location [父级目录别名] [目录] 5 6 切换目录 7 location d:/aaa 8 9 切换到文件所在目录 10 location $profile 11 12 切换到 $profile 所在目录 13 location -pfile 14 15 切换到桌面目录 16 location -desktop 17 18 切换到桌面目录下的 javafx 目录 19 location -desktop javafx 20 21 #> 22 function location { 23 24 param( 25 [string]$path, 26 [switch] $dev, 27 [switch] $desktop, 28 [switch] $test, 29 [switch] $bat, 30 [switch] $demo, 31 [switch] $pfile 32 33 ) 34 35 $mapping = @( 36 @{ is = $dev.ToBool(); path = "E:\develop\" } 37 @{ is = $desktop.ToBool(); path = "C:\Users\zbseoag\Desktop\" } 38 @{ is = $test.ToBool() ; path = "E:\develop\test" } 39 @{ is = $bat.ToBool(); path = "E:\develop\windows\bat" } 40 @{ is = $demo.ToBool(); path = "D:\demo\" } 41 @{ is = $pfile.ToBool(); path = $profile } 42 ) 43 44 $mapping = $mapping.where({$_.is -eq $true}) 45 if($mapping){ 46 $mapping = $mapping.path 47 #若有二级目录,则加上二级目录结成完整目录 48 if($path){ $mapping += $path } 49 }else{ 50 $mapping = $path 51 } 52 53 if(Test-Path $mapping){ 54 55 #如果是一个文件路径,则获取该文件所在目录 56 if(!(Test-Path -PathType Container -Path $mapping)){ $mapping = Split-Path -Path $mapping } 57 Set-Location -Path $mapping 58 }else{ 59 Write-Error "Directory is not exist: $mapping" 60 } 61 62 63 64 } 65 66 67 set-alias -Name:"cd" -Value:"location" -Description:"" -Option:"AllScope"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库