有没有简单的方法可以重命名目录中的所有文件?PowerShell 是可行的方法吗?
我想从这个开始:
c:\family_pics\
img123.jpg
img124.jpg
更改为:
c:\family_pics\
family_pics_1.jpg
family_pics_2.jpg
理想情况下,我想在目录上运行一个脚本,该脚本将根据当前目录的名称重命名所有文件,同时保留扩展名,并以递归方式遍历目录树。
答案1
基于一切可以在一行 PowerShell 中完成(就像所有事情也可以在一行 Perl 中完成一样),这是单个目录的 PS 代码。
$i=0; get-childitem $dirname | foreach-object {
rename-item "$dirname\$_" $("{0}_{1}{2}" -f $dirname, ++$i, $_.Extension)
}
要递归执行此操作,您需要将上述内容包装在一个函数中,然后在树中的每个目录上调用它。如果您需要使用正则表达式,您还可以将格式字符串替换为更复杂的格式。
答案2
这有点不专业,但我已经这样做了 12 年,而且我做得相当快:
- 在 c:\family_pics 中打开命令提示符并输入
dir >> dir.xls
- 在 Excel 中打开 dir.xls 文件
- 突出显示第一列,选择“文本到列”,并在空格字符上添加列分隔符(忽略重复项)
- 你现在有了一个漂亮的表格,其中包含当前文件名、文件大小等
- 在文件名前添加新列“ren”
- 在文件名后添加一个新列,然后使用您想要的任何 Excel 函数来生成新文件名。对于您来说,如果您输入前两个文件名,然后双击单元格的右下角,Excel 将自动检测模式并生成其余名称。
- 另存为
ren.bat
- 运行刚刚创建的批处理文件,它将重命名所有目录
虽然可能不是很明显,但 Excel非常非常适合这类任务,因为您可以使用任何您想要的公式来生成新文件,使用来自现有文件的输入(时间戳、文件名、大小等)。
答案3
虽然您可以使用批处理文件来执行操作,但我发现,拥有更多的控制、选项等以及对即将发生的事情的直观线索会更好。
有一款免费工具叫 CKRename。原作者的网站似乎已经消失了,但这款应用功能齐全,而且很受欢迎(我已经用了 8 年了)。 下载 CKRename
以下是实际操作的截图
答案4
重命名器: http://www.den4b.com/
另请参阅: 如何在 Windows 中从文件选择中重命名部分文件名?
将包含图片的文件夹放入 ReNamer(默认情况下将递归添加子文件夹)。如果要保持顺序,请单击“名称”列以按文件名排序。特殊元标记将允许您使用父文件夹名称进行重命名。使用以下重命名规则:
- 从位置 1 删除直到结尾(跳过扩展)
- 插入“:File_FolderName:_”作为前缀(跳过扩展名)
- 从 1 开始增量序列化,步骤 1 重复 1 作为后缀(跳过扩展)