Windows 通过 CLI 批量重命名中间文件名?

Windows 通过 CLI 批量重命名中间文件名?

原始文件

File 15 - Example.txt
File 2 - Example.txt
File 22 - Example.txt
File 3 - Example.txt
File 4 - Example.txt
File 5 - Example.txt

期望输出

File 15 - Example.txt
File 02 - Example.txt
File 22 - Example.txt
File 03 - Example.txt
File 04 - Example.txt
File 05 - Example.txt

可以使用 轻松重命名单个文件ren

ren "File 2 - Example.txt" "File 02 - Example.txt"

是否可以使用 Windowsrenrename工具批量重命名?

答案1

是否可以使用 Windows ren 或重命名工具批量重命名?

是的,但它需要一个批处理文件。

测试.cmd:

@echo off
setlocal EnableDelayedExpansion
for /f "tokens=1,2,3,4" %%i in ('dir /b *Example.txt') do (
  rem pad 2nd token with leading zero
  set _num=0%%j
  set _num=!_num:~-2!
  ren "%%i %%j %%k %%l" "%%i !_num! %%k %%l"
  )
endlocal

例子:

> dir *Example.txt
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\test

03/01/2019  11:30                 0 File 15 - Example.txt
03/01/2019  11:30                 0 File 2 - Example.txt
03/01/2019  11:30                 0 File 22 - Example.txt
03/01/2019  11:30                 0 File 3 - Example.txt
03/01/2019  11:30                 0 File 4 - Example.txt
03/01/2019  11:30                 0 File 5 - Example.txt
               6 File(s)              0 bytes
               0 Dir(s)  1,075,134,230,528 bytes free

> ..\test

> dir
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\test

03/01/2019  11:54    <DIR>          .
03/01/2019  11:54    <DIR>          ..
03/01/2019  11:30                 0 File 02 - Example.txt
03/01/2019  11:30                 0 File 03 - Example.txt
03/01/2019  11:30                 0 File 04 - Example.txt
03/01/2019  11:30                 0 File 05 - Example.txt
03/01/2019  11:30                 0 File 15 - Example.txt
03/01/2019  11:30                 0 File 22 - Example.txt
               6 File(s)              0 bytes
               2 Dir(s)  1,075,134,230,528 bytes free

进一步阅读

答案2

这个 PowerShell 单行命令将文件名中的所有数字扩展至两位数.PadLeft(2,'0'):(
并且保留更多位数的数字不变)

Get-ChildItem *[0-9]*.txt|Rename-Item -NewName {([regex]::Replace($_.BaseName,'\d+',{$args[0].Value.PadLeft(2,'0')}))+$_.Extension}

为了讨论主题,将其包装在 cmd 行/批处理文件中:

Powershell -Nop -C "Get-ChildItem *[0-9]*.txt|Rename-Item -NewName {([regex]::Replace($_.BaseName,'\d+',{$args[0].Value.PadLeft(2,'0')}))+$_.Extension}"

为了安全起见,在执行命令之前,请附加

  • -Confirm在重命名之前询问
  • -WhatIf列出所有重命名它不带参数执行

就在最后一个"

答案3

编辑:我刚刚注意到这个疑问是关于从命令行重命名,所以它不能直接回答这个问题...我现在保留它,希望它对其他人有用。


总指挥官文件管理器有一个出色的批量重命名工具。它包含许多功能,包括重命名预览、不同的重命名掩码、正则表达式、重命名整个文件夹层次结构中的文件等等。同时,它非常易于使用。

以下是演示其用法的屏幕截图:

Total Commander 多重重命名示例

一步步:

  1. 下载并运行 Total Commander。
  2. 定位到包含要重命名的文件的文件夹。
  3. 标记要重命名的文件:
    • 选项 1 - Ctrl+A用于标记文件夹中的所有文件。
    • Space选项 2 - 使用键或鼠标右键单击逐个标记文件。
    • 选项 3 - 打开“查找文件”(Alt+ F7),*.txt在“搜索”框中输入,单击“开始搜索”,按“送入列表框”,然后用Ctrl+标记文件A。如果您还想重命名内部文件夹中的文件,请使用此技术。
  4. Ctrl+M打开多重重命名工具。
  5. 在“搜索”和“替换为”框中设置所需的值。如果使用正则表达式,请选中 RegEx 框。
  6. 点击“开始!”。

答案4

ren *.bat *.txt将重命名所有匹配文件的扩展名,同时保留名称的其他部分。您不能滥用此功能来运行一系列ren命令吗?

  • ren "File *" "File 0*"
  • ren "File 00*" "File 0*"
  • (处理悬垂余项,如File 022 - Example.txt

相关内容