如何编写一个批处理或cmd文件来重命名目录中的所有文件?我使用Windows。
更改此:
750_MOT_Forgiving_120x90.jpg
751_MOT_Persecution_1_120x90.jpg
752_MOT_Persecution_2_120x90.jpg
753_MOT_Hatred_120x90.jpg
754_MOT_Suffering_120x90.jpg
755_MOT_Freedom_of_Religion_120x90.jpg
756_MOT_Layla_Testimony_1_120x90.jpg
757_MOT_Layla_Testimony_2_120x90.jpg
字符串
对此:
750_MOT_Forgiving_67x100.jpg
751_MOT_Persecution_1_67x100.jpg
752_MOT_Persecution_2_67x100.jpg
753_MOT_Hatred_67x100.jpg
754_MOT_Suffering_67x100.jpg
755_MOT_Freedom_of_Religion_67x100.jpg
756_MOT_Layla_Testimony_1_67x100.jpg
757_MOT_Layla_Testimony_2_67x100.jpg
型
3条答案
按热度按时间xkrw2x1b1#
一个FOR语句循环遍历名称(输入
FOR /?
获取帮助),以及字符串搜索和替换(输入SET /?
获取帮助)。字符串
更新- 2012-11-07
我研究了RENAME命令如何处理通配符:How does the Windows RENAME command interpret wildcards?
事实证明,使用RENAME命令可以很容易地解决这个特殊问题,而不需要任何批处理脚本。
型
_
后面的字符数并不重要。如果120x90
变成x
或xxxxxxxxxx
,重命名仍然可以正常工作。这个问题的重要方面是最后一个_
和.
之间的整个文本被替换。guykilcj2#
从Windows 7开始,您可以在PowerShell的一行中完成此操作。
字符串
说明
powershell -C "..."
启动PowerShell会话以运行引用的命令。当命令完成时,它返回到 shell 。-C
是-Command
的缩写。gci
返回当前目录下的所有文件。它是Get-ChildItem
的别名。| % {...}
创建了一个管道来处理每个文件。%
是Foreach-Object
的别名。$_.Name
是管道中当前文件的名称。($_.Name -replace '120x90', '67x100')
使用-replace
操作符创建新文件名。第一个子字符串的每个出现都被第二个子字符串替换。rni
更改每个文件的名称。第一个参数(称为-Path
)标识文件。第二个参数(称为-NewName
)指定新名称。rni
是Rename-Item的别名。示例
型
rqcrx0a63#
我发现这个批处理脚本非常有用(见下文),它基本上是dbenham的solution的变体:
字符串
你只需要保存一个.bat文件,然后在你想重命名的文件夹中运行它。首先你切换出搜索文本,输入替换文本,并在运行前保存它。然后它只会重命名那些包含输入字符串的文件(现在是“searchtext”)。使用像这样的通配符(即
*%search%*
),字符串可以在名称中的任何地方。然而,这个版本也取代了输入的扩展名的扩展名(.jpg).对于我自己的使用,这是我正在寻找的,但如果你不想改变扩展名,dbenham的版本与“名称”而不是“文件名”结合删除有关扩展名的部分将工作得更好.
我用不同的文件运行了几次,包括带下划线的文件,到目前为止,它按预期工作。