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"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM