PowerShell~文件操做和對象遍歷

ps提供了豐富的文件操做,如創建,刪除,更名,移動,複製,文件夾創建,顯示文件列表,同時對數組對象的遍歷也很方便,若是在使用PS腳本時,但願現時傳入參數,能夠把參數聲明爲param,固然須要把它寫在文件開頭的位置。web

下面是大叔在看完eshop項目後,寫的幾個測試代碼,對它們進行了註釋,方便你們學習。api

Param([string] $rootPath) #輸入參數
$scriptPath = Split-Path $script:MyInvocation.MyCommand.Path #當前應用程序目錄

Write-Host "Current script directory is $scriptPath" -ForegroundColor Yellow #定義字體顏色

if ([string]::IsNullOrEmpty($rootPath)) { #若是變量爲空,就爲它賦值
    $rootPath = "$scriptPath\"
}

Write-Host "Root path used is $rootPath" -ForegroundColor Yellow

$projectPaths = 
    @{Path="$rootPath\src\web";Prj="test.txt"},
    @{Path="$rootPath\src\api";Prj="test.txt"}

$projectPaths | foreach {
    $projectPath = $_.Path
    $projectFile = $_.Prj
    $outPath = $_.Path + "\publish"
    $projectPathAndFile = "$projectPath\$projectFile"
    Write-Host "Deleting old publish files in $outPath" -ForegroundColor Yellow
    remove-item -path $outPath -Force -Recurse -ErrorAction SilentlyContinue #先刪除先來的文件夾及內容
    Write-Host "Publishing $projectPathAndFile to $outPath" -ForegroundColor Yellow
 
    New-Item $outPath -type directory  -Force  #創建文件夾 

   Copy-Item $projectPathAndFile -Destination $outPath # 複製到指定位置

   # dotnet restore $projectPathAndFile
   # dotnet build $projectPathAndFile
   # dotnet publish $projectPathAndFile -o $outPath
}

$test=1,2,3 #定義簡單類型數組
$test | foreach{
Write-Host $_ #遍歷每一個元素
}

$testObj=@{name="zzl";age=34},@{name="zhz";age=8} #定義一個對象數組
$testObj | foreach{
$name= $_.name #必須將它賦給一個變量,若是直接在字符串裏使用,它將輸出本身的類型
$age=$_.age
Write-Host "name=$name,age=$age"
}

上面代碼會在E盤指定目錄進行文件的複製,這相似於網站的發佈機制,從一個地方複製到網站目錄。數組

其中param要求咱們在使用ps1文件時,提供一下參數,固然能夠不傳,咱們代碼裏也有對它的賦值。學習

整個DEMO運行的結果如圖測試

相關文章
相關標籤/搜索