我的 PowerShell 腳本的任務是從指定的語言檔案夾中獲取檔案,并將它們放在另一個目錄中的平面結構中,使用新的后綴 (.new) 和下劃線后跟檔案名中的語言標記。
當前$lang,重命名時變數無法正確決議。我怎樣才能讓它正確解決?
新檔案不應該在源檔案夾中創建,它們應該到其他地方的另一個檔案夾中,進入一個平面結構。如何將其包含在我的腳本中?
而且,一個額外的問題,對于中文(zh)檔案名中的語言標簽應該是zh-cn而不是zh(但搜索檔案夾是zh)。(如果中文太復雜我會單獨開個case...)
$languages = @('cs','tr','zh')
foreach ($lang in $languages) { Get-ChildItem *\*\$lang -Recurse -Filter "*mytext.xml" | Copy-Item -Destination {$_.Fullname -replace 'xml', '_$lang.new' } }
uj5u.com熱心網友回復:
我會使用 ForEach-Object 回圈來做到這一點,這樣我們就可以對zhtozh-cn轉換進行例外處理。
像這樣的東西:
$languages = 'cs','tr','zh'
$sourcePath = 'X:\PathToWhereTheLanguageSUbfoldersAre'
$destination = 'Y:\PathToWhereTheFileCopiesShouldGo'
foreach ($lang in $languages) {
$langSource = Join-Path -Path $sourcePath -ChildPath $lang
$suffix = if ($lang -eq 'zh') { 'zh-cn' } else { $lang }
Get-ChildItem -Path $langSource -Recurse -Filter "*mytext.xml" -File |
ForEach-Object {
$target = Join-Path -Path $destination -ChildPath ('{0}_{1}.new' -f $_.BaseName, $suffix)
$_ | Copy-Item -Destination $target
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/327022.html
