如何一次重命名多个文件并替换特定字符而不影响其他字符

时间:2019-09-25 20:02:22

标签: powershell file-rename

我要替换这98个看起来像这样的文件中的前两个数字

10 10HZ.mp3
11 11HZ.mp3
12 12HZ.mp3

带有“ Bass Mekanik-”,并使它看起来像这样

Bass Mekanik - 10HZ.mp3
Bass Mekanik - 11HZ.mp3
Bass Mekanik - 12HZ.mp3

我在CMD上尝试了很多不同的组合

*重命名“ ?? ???????。mp3”“ Bass Mekanik-????。mp3”

但是没有任何效果。我想在每个文件上保留最后4个字符。

而且在不久的将来,我将需要在每个文件(不包括这些文件以及具有很多其他字符的其他文件)之前添加“ Bass Mekanik-”,而无需进行其他任何更改。到目前为止,我学习了如何使用

删除前两个字符

*重命名“ ?? ???????。mp3”“ // ????。mp3”

然后我尝试添加“ Bass Mekanik”,但出现错误“存在重复的文件名或文件 找不到。” 我希望这是可能的...

1 个答案:

答案 0 :(得分:0)

这应该做您所需要的,如果您对结果满意,请删除WhatIf。

保留文件名的最后4个字符(带“ .mp3”的8个字符)和带“ Bass Mekanik”的前缀

static void Main(string[] args)
{
    var filePath = @"f:\private\temp\temp2.txt";

    // Declare this outside the 'using' block so we can access it later
    Config config;

    using (var reader = new StreamReader(filePath))
    {
        config = (Config) new XmlSerializer(typeof(Config)).Deserialize(reader);
    }

    Console.WriteLine(config);

    GetKeyFromUser("\n\nDone! Press any key to exit...");
}

在当前文件名前添加“ Bass Mekanik”

Get-ChildItem | % { $_.FullName -match ".{8}(?<=\.mp3$)" | Out-Null ; Rename-Item -LiteralPath $_.FullName -NewName ( "Bass Mekanik " + $Matches.Values ) -WhatIf }