在 Windows 中重命名目录中所有文件的简单方法

Eve*_*ien 9 windows powershell

有没有一种简单的方法可以重命名目录中的所有文件?PowerShell 是要走的路吗?

我想从这个开始:

c:\family_pics\
   img123.jpg
   img124.jpg
Run Code Online (Sandbox Code Playgroud)

对此:

c:\family_pics\ 
   family_pics_1.jpg 
   family_pics_2.jpg
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想在一个目录上运行一个脚本,该脚本将根据当前目录的名称重命名所有文件,同时保留扩展名并递归遍历目录树。

use*_*278 16

基于一切都可以在一行 PowerShell 中完成(就像在 1 行 Perl 中也可以完成一样),这里是单个目录的 PS 代码。

$i=0; get-childitem $dirname | foreach-object {

       rename-item "$dirname\$_" $("{0}_{1}{2}" -f $dirname, ++$i, $_.Extension)
}
Run Code Online (Sandbox Code Playgroud)

要递归地执行此操作,您需要将上述内容包装在一个函数中,然后在树中的每个目录上调用它。如果您需要使用正则表达式,您还可以用更复杂的内容替换格式字符串。


Por*_*man 10

这有点 hacky,但我已经这样做了大约 12 年,而且我做得很快:

  • 在 c:\family_pics 中打开命令提示符并键入 dir >> dir.xls
  • 在 Excel 中打开 dir.xls 文件
  • 突出显示第一列,选择“Text to Columns”,并在空格字符上添加分栏符(忽略重复项)
  • 您现在有一个包含当前文件名、文件大小等的漂亮表格
  • 在文件名前添加一个新列“ren”
  • 在文件名后添加一个新列,并使用您想要生成新文件名的任何 Excel 函数。在您的情况下,如果您键入前两个文件名,然后双击单元格的右下角,Excel 将自动检测模式并生成其余名称。
  • 另存为 ren.bat
  • 运行您刚刚创建的批处理文件,它将重命名您的所有目录

虽然它可能不是很明显,但 Excel非常适合这种任务,因为您可以使用任何类型的公式来生成新文件,使用来自现有文件的输入(时间戳、文件名、大小等) )。