自动重命名多个文件一次 - ddmmyyyy.file到yyyymmdd.file

时间:2010-01-14 23:32:15

标签: php file rename

我有1500个文件以不正确的日期格式命名。我想重命名它们。有没有可以做到这一点的工具?否则是一段PHP代码。

文件名是: ddmmyyyy.xls(例如2010年1月15日的15012010)

我希望: yyyymmdd.xls(例如20100115.xls)

关于如何一次性完成1500个文件的任何线索?

BR。安德斯


更新: 还尝试了MP3TAG,这是其中一个答案中的建议。它是一个免费工具,也完成了这项工作。花了一段时间才弄清楚如何使用它。如果你想尝试这样做:

  1. 将xls(或其他格式)添加到配置
  2. 中的可编辑文件列表中
  3. 选择要加载文件的文件夹并在要编辑的窗格中标记文件
  4. 我点击了“转换 - 快速”按钮。也可以保存模式以供将来使用,但我无法弄清楚如何。
  5. 点击“convert - quick”后选择“使用正则表达式”(仅限正则表达式选项)
  6. 然后您只需添加信息即可处理重命名。就我而言:

    • 字段:_FILENAME
    • 来自:([0-9] {2})([0-9] {2})([0-9] {4})
    • to:$ 3- $ 2- $ 1

    现在名为15012010.xls(ddmmyyyy.xls)的所有文件都将命名为2010-01-15.xls

6 个答案:

答案 0 :(得分:3)

这是一个开始(未经测试,但你应该明白这一点)。

$files = glob('your/folder/*.xls');

foreach($files as $file) {

    preg_match_all('/^(\d{2})(\d{2})(\d{4})\.xls$/', basename($file), $matches);

    if ( ! $matches) continue;        

    $year = $matches[0][3];
    $month = $matches[0][2];
    $day = $matches[0][1];

    $newFilename = $year . $month . $day . '.xls'; 
    rename  ( $file, dirname($file) . '/' . $newFilename );

}

答案 1 :(得分:1)

如果您的Linux机器上有文件......您可以使用bash来执行:

for f in *.xls; do
    mv $f "$(echo $f | cut -c4-8)$(echo $f | cut -c3,4)$(echo $f | cut -c1,2).xls"
done

答案 2 :(得分:0)

可以执行文件名模式转换的工具是Mp3tag

选择convert,然后选择filename - filename

我确信那里还有其他工具!

(这个答案实际上不是StackOverflow的精神,但我认为OP不一定是在寻找自动化解决方案......)

答案 3 :(得分:0)

基于alex function,但是这个正确地添加了.xls扩展名。

foreach (glob('/path/to/your/*.xls') as $file)
{
    rename($file, dirname($file) . '/' . substr(basename($file), 4, 4) . substr(basename($file), 2, 2) . substr(basename($file), 0, 2) . '.xls');
}

答案 4 :(得分:0)

如果你有bash

#!/bin/bash

shopt -s nullglob
for xls in [0-9]*.xls
do
    day=${xls:0:2}
    mth=${xls:3:2}
    yr=${xls:4:4}
    echo mv "$xls" "${yr}${mth}${day}.xls"
done

无需外部工具。

答案 5 :(得分:0)

  

文件名是:ddmmyyyy.xls(例如   2010年1月15日15012010)

     

我希望:yyyymmdd.xls(例如   20100115.xls)

使用此脚本。

# Script RenameYYYYMMDD.txt
var str dir, list, file, newname, dd, mm
lf -r -n "*.xls" $dir > $list
while ($list <> "")
do
    lex "1" $list > $file ; stex -p "^/^l[" $file > $newname ; chex "2]" $newname > $dd
    chex "2]" $newname > $mm ; sin "^.^l" ($mm+$dd) $newname > null
    system rename ("\""+$file+"\"") $newname
done

这个脚本是biterscripting(http://www.biterscripting.com)。首先在测试文件夹中测试脚本。

要测试,请将脚本代码保存在文件“C:/Scripts/RenameYYYYMMDD.txt”中,然后输入以下命令。

script "C:/Scripts/RenameYYYYMMDD.txt" dir("C:/path/to/test folder")

此命令会将目录“C:/ path / to / test folder”下的所有文件ddmmyyyy.xls重命名为yyyymmdd.xls。