2

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

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

我想要:yyyymmdd.xls(例如 20100115.xls)

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

BR。安德斯


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

  1. 将 xls(或其他格式)添加到配置中的可编辑文件列表中
  2. 选择文件夹以加载文件并在要编辑的窗格中标记文件
  3. 我点击了“转换 - 快速”按钮。也可以保存模式以备将来使用,但我不知道如何。
  4. 单击“转换 - 快速”后选择“使用正则表达式”(仅正则表达式选项)

然后你只需添加信息来处理重命名。就我而言:

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

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

4

6 回答 6

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 );

}
于 2010-01-14T23:39:40.543 回答
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
于 2010-01-14T23:42:16.097 回答
0

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

选择convert然后filename - filename

我敢肯定还有其他工具!

(这个答案并不真正符合 StackOverflow 精神,但我认为 OP 不一定在寻找自动化解决方案......)

于 2010-01-14T23:50:42.147 回答
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');
}
于 2010-01-14T23:52:18.543 回答
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

无需外部工具。

于 2010-01-15T01:43:35.143 回答
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 文件夹”下的所有文件 ddmmyyyy.xls 重命名为 yyyymmdd.xls。

于 2010-02-01T15:14:48.007 回答