命令行(或批处理文件)重命名文件夹中的所有文件(Windows)

时间:2011-10-07 04:27:43

标签: windows batch-file command cmd batch-rename

我需要使用以下文件名格式重命名文件夹中的所有文件;

ITEMID-直bottle.png

ITEMID-bottle.png

如何使用cmd脚本或在命令行中完成此操作?

示例;

REDHI20806-straight-bottle.png到REDHI20806-bottle.png

我应该说,这是在Windows中,我想使用命令行或批处理文件在特定驱动器上的文件夹中的所有文件上运行此重命名

4 个答案:

答案 0 :(得分:7)

简短回答


Windows 上,您可以使用在Windows 7上默认安装的PowerShell,并且可以在以前的版本上下载和安装。使用PowerShell,您可以重命名为:

ls | foreach-object -process {ren $_ (%{$_ -replace "-straight",""})}

Unix / Linux 上,不需要安装任何特定内容,您可以将其重命名为:

ls | awk '{print("mv "$1" "$1)}' | cut -f -3,5- -d '-' | sh


实施例

Windows示例

鉴于

PS C:\rename-me> ls

    Directory: C:\rename-me

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---         10/9/2011   1:35 PM          0 REDHI20806-straight-bottle.png
-a---         10/9/2011   1:35 PM          0 REDHI20807-straight-bottle.png
-a---         10/9/2011   1:35 PM          0 REDHI20808-straight-bottle.png
-a---         10/9/2011   1:35 PM          0 REDHI20809-straight-bottle.png
-a---         10/9/2011   1:35 PM          0 REDHI20810-straight-bottle.png

做到

PS C:\rename-me> ls | foreach-object -process {ren $_ (%{$_ -replace "-straight",""})}

结果

PS C:\rename-me> ls

    Directory: C:\rename-me

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---         10/9/2011   1:35 PM          0 REDHI20806-bottle.png
-a---         10/9/2011   1:35 PM          0 REDHI20807-bottle.png
-a---         10/9/2011   1:35 PM          0 REDHI20808-bottle.png
-a---         10/9/2011   1:35 PM          0 REDHI20809-bottle.png
-a---         10/9/2011   1:35 PM          0 REDHI20810-bottle.png


Unix / Linux示例

鉴于

$ ls -l
total 0
-rw-r--r--  1 user  staff  0 Oct  7 00:54 REDHI20806-straight-bottle.png
-rw-r--r--  1 user  staff  0 Oct  7 00:54 REDHI20807-straight-bottle.png
-rw-r--r--  1 user  staff  0 Oct  7 00:54 REDHI20808-straight-bottle.png
-rw-r--r--  1 user  staff  0 Oct  7 00:54 REDHI20809-straight-bottle.png
-rw-r--r--  1 user  staff  0 Oct  7 00:54 REDHI20810-straight-bottle.png

做到

$ ls | awk '{print("mv "$1" "$1)}' | cut -f -3,5- -d '-' | sh

结果

$ ls -l
total 0
-rw-r--r--  1 user  staff  0 Oct  7 00:54 REDHI20806-bottle.png
-rw-r--r--  1 user  staff  0 Oct  7 00:54 REDHI20807-bottle.png
-rw-r--r--  1 user  staff  0 Oct  7 00:54 REDHI20808-bottle.png
-rw-r--r--  1 user  staff  0 Oct  7 00:54 REDHI20809-bottle.png
-rw-r--r--  1 user  staff  0 Oct  7 00:54 REDHI20810-bottle.png

答案 1 :(得分:1)

如果只需要更改文件名(straight-bottle.png)的最后一部分(bottle.png),您可以直接执行此操作:

REN ??????????-straight-bottle.png ??????????-bottle.png

(虽然我没试过这个)

答案 2 :(得分:0)

我最终使用了 wimh's answer 的修改版本,但我使用了“*”而不是“??????????”,我认为它可以更好地处理不同长度的名称。

ren *-straight-bottle.png *-bottle.png

答案 3 :(得分:0)

就我个人而言,我会使用专门为批量重命名设计的工具,例如renamer

此命令从当前目录中的所有文件中删除 -straight 文本:

$ renamer --find=-straight --dry-run *

Dry run

✔︎ REDHI20806-straight-bottle.png → REDHI20806-bottle.png
✔︎ GRNHI30030-straight-bottle.png → GRNHI30030-bottle.png

Rename complete: 2 of 2 files renamed.