1

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

itemID-直瓶.png

itemID-bottle.png

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

例子;

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

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

4

4 回答 4

7

简短的回答


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

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

Unix/Linux 上,不需要安装任何特定的东西,您可以将重命名为:

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


例子

窗口示例

给定

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
于 2011-10-07T04:59:43.453 回答
2

如果只有文件名的最后一部分 ( straight-bottle.png) 需要更改 ( bottle.png) 你可以简单地这样做:

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

(虽然我没有测试这个)

于 2011-10-09T11:25:45.593 回答
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.
于 2021-05-04T08:21:37.887 回答
0

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

ren *-straight-bottle.png *-bottle.png
于 2021-02-05T22:57:38.950 回答