首页 文章

使用PowerShell批量删除文件名开头的字符时出现问题

提问于
浏览
0

我正在尝试使用Powershell整理一批文件名,我收到此错误:

Rename-Item : Cannot create a file when that file already exists.
At line:1 char:7
+ Dir | Rename-Item -NewName {$_.Name.Substring(0,$_.BaseName.Length-4) ...
+       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (C:\Users\garet\...e Mine (1).mp3:String) [Rename-Item], IOException
    + FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand

我正在使用的命令是:

Dir | Rename-Item -NewName {$_.Name.Substring(0,$_.BaseName.Length-4) + $_.Extension}

1 回答

  • 2

    我认为你的命令目前不是删除前4个字符,而是删除最后4个字符 . 试试这个:

    Dir | Rename-Item -NewName {$_.name.substring(4,$_.BaseName.length-4) + $_.Extension}
    

    您可以进一步简化此操作,就好像您希望字符串的全长少于开头的字符数,您只需提供起始索引即可 .

    Dir | Rename-Item -NewName {$_.name.substring(4) + $_.Extension}
    

    例如:

    'test'.substring(2)
    

    输出:

    st
    

    Explanation:

    使用 substring 时,传递两个值,第一个是要从其开始的字符串的字符索引,第二个是要从中捕获的字符串的字符数 .

相关问题