重命名没有扩展名的文件。

6

如何将文件夹中没有扩展名的所有文件重命名为“.something”?

我尝试过ren *.* *.jpeg和其他一些方法,但都没有起作用。


2
可能是查找并重命名没有扩展名的文件?的重复问题。 - Rishav
7个回答

17

Asterisk * 可匹配任何扩展名。您想匹配没有扩展名,因此不要提供扩展名。在您的情况下,以下两种变体都可以使用:

  • ren * *.jpeg
  • ren *. *.jpeg

注意:您可以在这里阅读有关使用ren命令的**.的特殊性。


上面的方法只在Windows的命令行(cmd)中可用。PowerShell的通配符工作方式不同,大多数情况下不会对扩展名做任何特殊处理。此外,PowerShell中的批量重命名也有所区别。因此:

dir -Filter "*." -File | ren -NewName { $_.name -replace "$", ".jpeg" }

1
这对我产生了错误:ren: 无法重命名,因为'*.'上的项目不存在。 - EBGreen
@EBGreen:没错,那只适用于cmd。PowerShell版本更复杂,请参见编辑。(虽然可能有更优雅的方法。) - Jeroen Mostert
你讲得非常清楚,早先我试图通过PowerShell运行它...使用简单的cmd 'ren ......'命令...这就是为什么它没有起作用的原因...很酷。 - Rishabh

4

"rename *. *.jpg" 如果在该位置没有无扩展名的文件,将会出现 "命令语法不正确" 的奇怪提示。起初我以为该命令已经失效了!因此只想让大家知道如果遇到相同的情况时该怎么办。


2

这是我测试过并且可行的:

ls -file | ?{$_.extension -eq ''} | %{ren $_ ($_.name + '.jpeg')}

2
稍有变化:
dir -filter *. -file | rename-item -NewName {"$($_.name)`.jpg"}

2
你的操作都是正确的,但是你需要使用*.而不是*.*,因为*.*会搜索所有扩展名的文件,而前者会搜索没有扩展名的所有文件,这正是你想要的结果。所以这是你的代码:
rename *. *.something

您可以参考这个答案以获得更多帮助。

2

尝试这个:

Get-ChildItem "c:\temp" -file "*." | rename-item -NewName {"{0}.something" -f $_.fullname}

1
这太难了,我�是想�一个简�的命令... 😅 如�你�解了,感谢你的帮助。 - Rishabh
这是一个非常实用的PowerShell命令,其他人可能会基于别名提出建议 :) - Esperento57
这对于PowerShell来说非常棒,谢谢。 - az1d

0

对我来说,只需要一个简单的命令 ren * *.jpeg 就可以搞定了。


这给了我一个无效的路径。 - EBGreen
经过双重检查,使用Windows命令提示符将3个没有扩展名的文件重命名成功。 - Alex
1
啊啊啊...我的错误,我以为是 PowerShell。你说得对,它会将 .jpeg 添加到所有文件中。所有文件 包括有扩展名的文件。 - EBGreen
1
是的,如果只想给没有扩展名的文件,那么命令应该是ren ..jpeg - Alex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接