Powershell_批次備份與複製(微軟模擬飛行)

 因為微軟模擬飛行的遊戲需要中文化,網路上的說法是官方中文包放在遊戲目錄內,要自己更名,也就是將中文包的檔名改成英文檔名,但是遊戲的目錄下有一百多個中文包,所以用powershell來批次處理,希望改完後可以成功中文化

這支程式會先將英文檔名更名備份,再將中文檔名改為英文檔名,因為有設定參數,所以其實也可以用來批次處理其他的檔案


# -----程式使用方式-----
  # 語法: test001.ps1 -en [英文語系檔名] -tw [中文語系檔名]
  # 例如: test001.ps1 -en us_en.lang -tw tw_cn.lang
  # -------------------
  
  
  #param是設定參數,如下設定了兩個參數:en、tw
  param($en,$tw)
  
  $US_filename = $en #英文語系檔
  $TW_filename = $tw #中文語系檔
  $US_filename_bk = $US_filename + ".bk" #英文原始檔備份的檔名
  
  if ( $US_filename -and $TW_filename) {
  
      get-childitem -Path "E:\images\test001" -Filter $US_filename -Recurse | foreach {
  
          write-host  "----------------------------------------------------------------"
          write-host  "原始檔名:"  $_.FullName
  
          #更名
          Rename-Item -Path $_.FullName -NewName $US_filename_bk
  
          $US_Fullname_bk = -join($_.DirectoryName,"\$US_filename_bk")
  
          #檢查更名是否成功
          if ((Test-Path -Path $US_Fullname_bk )) {
              write-host  "更名:" $_.Name "-->" $US_filename_bk
  
              #複製中文語系並更名
              $TW_Fullname = -join($_.DirectoryName,"\$TW_filename") #完整的中文語系路徑
              $US_Fullname = -join($_.DirectoryName,"\$US_filename") #完整的英文語系路徑(Copy用)
              Copy-Item -Path $TW_Fullname -Destination $US_Fullname -Force
              write-host  "複製並更名:" $TW_Fullname "-->" $US_filename_bk
          
  
          } else {
              write-host  "更名失敗" 
          }
      }
  
  } else {
      write-host "參數en或tw的值為空白,語法:test001.ps1 -en [英文語系檔名] -tw [中文語系檔名]"
  }