2012-05-02 116 views
1

我有以下散列表。使用散列表重命名文件

$m = @{ 
    "AAA" = "XX"; 
    "BBB" = "YY"; 
    "CCC" = "ZZ"; 
    .... 
} 

我想重新命名它的名字開始與「AAA」到「XX ......」,「BBB」到「YY ......」等 例如,「AAA1234文件。 txt「將被重命名爲」XX1234.txt「。

如何在PowerShell中執行此操作?

回答

2

此代碼的工作對我來說:

$m = @{"AAA" = "XX"; "BBB" = "YY"} 
$files = gci *.txt 
$m.GetEnumerator() | % { 
    $entry = $_ # save hash table entry for later use 
    $files | ? { $_.Name.StartsWith($entry.Key) } | 
     % { 
      $trimmed = $_.Name.Substring($entry.Key.length) # chops only the first occurence 
      $newName = $entry.Value + $trimmed 
      $_ | Rename-Item -NewName $newName   
     }   
} 
+0

名稱AAAAAA.txt將被更名爲XXXX.txt而不是XXAAA.txt雖然。 – ca9163d9

+0

好的,糾正了這一點。現在它應該可以工作。 – jumbo

+0

使用正則表達式'$ _ |可能會更容易一些Rename-Item -NewName($ _。Name --replace「^ $($ entry.Key)」,$ entry.Value)'。 – ca9163d9