1. 程式人生 > 實用技巧 >PowerShell 自定義 cd 命令

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中可以執行與linuxshell同名的命令,是通過定義命令的別名實現的。輸入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 location d:/aaa 7 8 切換到桌面目錄 9 location -desktop 10 11 切換到桌面目錄下的 javafx 目錄 12 location -desktop javafx 13 #> 14 function location { 15 16 param( 17 [switch]$dev, 18 [switch]$desktop, 19 [switch]$test, 20 [switch]$bat, 21 [switch
]$demo, 22 23 [string]$path 24 ) 25 26 $mapping = @( 27 @{ is = $dev.ToBool(); path = "E:\develop\" }, 28 @{ is = $desktop.ToBool(); path = "C:\Users\zbseoag\Desktop\" }, 29 @{ is = $test.ToBool() ; path = "E:\develop\test" }, 30 @{ is = $bat.ToBool(); path = "E:\develop\windows\bat" }, 31 @{ is = $demo.ToBool(); path = "D:\demo\" } 32 ) 33 34 $mapping = $mapping.where({$_.is -eq $true}) 35 if($mapping){ 36 $mapping = $mapping.path 37 #若有二級目錄,則加上二級目錄結成完整目錄 38 if($path){ $mapping += $path } 39 }else{ 40 $mapping = $path 41 } 42 43 if(Test-Path $mapping){ 44 Set-Location -Path $mapping 45 }else{ 46 Write-Error "Directory is not exist: $mapping" 47 } 48 49 } 50 51 set-alias -Name:"cd" -Value:"location" -Description:"" -Option:"AllScope"