PowerShell批量替换特定字符并重命名文件扩展名

特立独行

我需要批量重命名文件共享中的文件

  1. 包含一个特定的字符,即波浪号~
  2. 有大写字母的文件扩展名或根本没有。

目标是用简单的 代替波浪号-,保留文件扩展名(如果有),但将其转换为小写字母。

我在找到文件的脚本的第一部分取得了成功

$PATH = "\\<Fileservername>\<Folder>\"
$pattern = "*~*"
Get-ChildItem $PATH -Recurse | where {$_.Name -like $pattern}

我正在努力解决脚本的第二部分重命名。我在这里找到了两个主题:

我无法根据我的需要调整这些解决方案,而且可能需要采取额外的步骤来将给定的文件名从大写字母转换为小写字母,或者如果文件没有文件扩展名则跳过此步骤。

一个例子是重命名ACUJLH~HACUJLH-HKYA3BM~Q.PDFKYA3BM-Q.pdf

根据

这是我的贡献。我已将-File开关添加Get-ChildItemcmdlet,因此它只会查找文件,而不会尝试处理目录名称。此外,我已将替换模式更改为~+具有重复波浪号的文件将被替换为单个-字符。(KYA3BM~~~~Q.PDF变成KYA3BM-Q.pdf)

$path = "D:\Code\PowerShell\StackOverflow"
$pattern = "*~*"
Get-ChildItem $path -Recurse -File | Where-Object {$_.Name -like $pattern} |
    ForEach-Object {
        $directory = $_.DirectoryName                # or [System.IO.Path]::GetDirectoryName($_.FullName)  or use Split-Path $_.FullName -Parent
        $filename  = $_.BaseName -replace '~+', '-'  # or [System.IO.Path]::GetFileNameWithoutExtension($_.Name) -replace '~+', '-'
        $extension = $_.Extension                    # or [System.IO.Path]::GetExtension($_.Name)
        if (![string]::IsNullOrEmpty($extension)) { $filename += $extension.ToLower() }
        $newname = Join-Path -Path $directory -ChildPath $filename
        Rename-Item -LiteralPath $_.FullName -NewName $newName -Force
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

递归重命名文件扩展名

来自分类Dev

Unix:使用动态扩展名重命名文件

来自分类Dev

Bash脚本重命名文件扩展名

来自分类Dev

重命名许多文件的扩展名

来自分类Dev

重命名命令,用于从某个点(字符)开始替换文件名中的文本,但仅限于此,并保持文件扩展名

来自分类Dev

如何替换字符并重命名多个文件?

来自分类Dev

Python-重命名文件(特定扩展名除外)

来自分类Dev

Linux:重命名文件但保留扩展名?

来自分类Dev

递归批量重命名文件扩展名(Windows批处理)

来自分类Dev

批量重命名具有未知名称和扩展名的文件

来自分类Dev

批量重命名(删除特定字符)文件

来自分类Dev

重命名许多文件的扩展名

来自分类Dev

批量重命名,无论文件扩展名如何

来自分类Dev

如何通过删除扩展名重命名多个文件?

来自分类Dev

如何递归重命名文件扩展名

来自分类Dev

重命名不带文件扩展名的文件

来自分类Dev

如何使用适当的扩展名重命名文件?

来自分类Dev

Powershell:批量重命名并保留扩展名?

来自分类Dev

批处理脚本以递归方式移动.txt文件并重命名它们以替换特定字符

来自分类Dev

(重击)重命名文件扩展名

来自分类Dev

如何重命名具有不同扩展名的文件

来自分类Dev

如何使用特定扩展名重命名文件夹下的所有文件(递归方法)

来自分类Dev

Bash:重命名文件扩展名,出现错误

来自分类Dev

重命名具有特定扩展名的目录

来自分类Dev

批量重命名文件名以删除最后一个“-”后的部分,忽略扩展名

来自分类Dev

使用PowerShell重命名具有相同扩展名的多个文件

来自分类Dev

重命名具有多个文件扩展名的文件

来自分类Dev

使用来自不同扩展名的文件的字符串重命名文件

来自分类Dev

Gulp - 重命名文件扩展名

Related 相关文章

  1. 1

    递归重命名文件扩展名

  2. 2

    Unix:使用动态扩展名重命名文件

  3. 3

    Bash脚本重命名文件扩展名

  4. 4

    重命名许多文件的扩展名

  5. 5

    重命名命令,用于从某个点(字符)开始替换文件名中的文本,但仅限于此,并保持文件扩展名

  6. 6

    如何替换字符并重命名多个文件?

  7. 7

    Python-重命名文件(特定扩展名除外)

  8. 8

    Linux:重命名文件但保留扩展名?

  9. 9

    递归批量重命名文件扩展名(Windows批处理)

  10. 10

    批量重命名具有未知名称和扩展名的文件

  11. 11

    批量重命名(删除特定字符)文件

  12. 12

    重命名许多文件的扩展名

  13. 13

    批量重命名,无论文件扩展名如何

  14. 14

    如何通过删除扩展名重命名多个文件?

  15. 15

    如何递归重命名文件扩展名

  16. 16

    重命名不带文件扩展名的文件

  17. 17

    如何使用适当的扩展名重命名文件?

  18. 18

    Powershell:批量重命名并保留扩展名?

  19. 19

    批处理脚本以递归方式移动.txt文件并重命名它们以替换特定字符

  20. 20

    (重击)重命名文件扩展名

  21. 21

    如何重命名具有不同扩展名的文件

  22. 22

    如何使用特定扩展名重命名文件夹下的所有文件(递归方法)

  23. 23

    Bash:重命名文件扩展名,出现错误

  24. 24

    重命名具有特定扩展名的目录

  25. 25

    批量重命名文件名以删除最后一个“-”后的部分,忽略扩展名

  26. 26

    使用PowerShell重命名具有相同扩展名的多个文件

  27. 27

    重命名具有多个文件扩展名的文件

  28. 28

    使用来自不同扩展名的文件的字符串重命名文件

  29. 29

    Gulp - 重命名文件扩展名

热门标签

归档