繁体   English   中英

使用 powershell 重命名文件(可变文件名结构)

[英]Rename file with powershell (variable file name structure)

目前我在使用 powershell 重命名文件名时遇到问题。 我实际上能够重命名特定文件夹中的文件,但是如果结构不同,则命令失败。

示例文件:

test file - 1234 - copy.docx
test file - 1234.pdf

我正在运行以下命令:

Get-ChildItem <location> -file | foreach {
Rename-Item -Path $_.FullName -NewName ($_.Name.Split("-")[0] + $_.Extension) }

我想在最后一个“-”之前保留文件名。 但是如果我运行我的命令,我总是在第一个“-”之前得到文件名。

对更好的方法有什么建议吗?

最直接的方法:

Get-ChildItem <location> -File | Rename-Item -NewName {
    $index = $_.BaseName.LastIndexOf("-")
    if ($index -ge 0) {
        $_.BaseName.Substring(0, $index).Trim() + $_.Extension
    }
    else { $_.Name }
}

正则表达式替换:

Get-ChildItem <location> -File |
  Rename-Item -NewName {($_.BaseName -replace '(.*)-.*', '$1').Trim() + $_.Extension}

您可以使用RegEx来实现所需的输出:

Rename-Item -Path $_.FullName -NewName (($_.Name -replace '(.*)-.*?$','$1') + $_.Extension) }

(.*)-.*?$选择所有字符(贪婪)直到最后一个-在行尾之前。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM