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


13

原始文件

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"

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


1
尼斯免费实用工具,使这种类型的任务变得容易。... bulkrenameutility.co.uk/Main_Intro.php
摩押

我同意。我可以为此命名很多基于GUI的解决方案,并且想知道为什么坚持使用CLI
Mawg说要恢复Monica

@Mawg,您可以使用这些GUI工具编写脚本吗?
萨布里娜

我可以-使用AutoIt-但可能会建议反对:-)我只是想知道CLI是否有硬性要求,现在看来确实如此。感谢澄清
Mawg说起用莫妮卡

Answers:


13

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

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

test.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

进一步阅读


17

该PowerShell One衬板会将文件名中的所有数字扩展到两个位置.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的文件管理器拥有出色的批量重命名工具。它包括许多功能,包括重命名预览,不同的重命名掩码,正则表达式,在整个文件夹层次结构中重命名文件等等。同时,它非常易于使用。

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

Total Commander Multi重命名示例

一步步:

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

-2

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

  • ren "File *" "File 0*"
  • ren "File 00*" "File 0*"
  • (处理悬空的余数,例如 File 022 - Example.txt

1
没有帮助,您是否检查了命令的作用?2-> 0、22-> 02、15-> 05。
LotPings

不,我没有Windows操作系统,所以没有尝试。但是我记得REN可以做到这一点。我还是想提个建议。
道格拉斯举行了
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.