2012-05-02 62 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