Php 一次性自动重命名多个文件-ddmmyyyy.file为yyyyymmdd.file
我有1500个文件的命名格式不正确。我想重新命名它们。有没有一种工具可以做到这一点?否则就是一段php代码 文件名为: ddmmyyyy.xls(如2010年1月15日的15012010) 我想: yyyymmdd.xls(例如20100115.xls) 关于如何一次性处理1500个文件的线索 比尔。安德斯Php 一次性自动重命名多个文件-ddmmyyyy.file为yyyyymmdd.file,php,file,rename,Php,File,Rename,我有1500个文件的命名格式不正确。我想重新命名它们。有没有一种工具可以做到这一点?否则就是一段php代码 文件名为: ddmmyyyy.xls(如2010年1月15日的15012010) 我想: yyyymmdd.xls(例如20100115.xls) 关于如何一次性处理1500个文件的线索 比尔。安德斯 更新: 还尝试了其中一个答案中建议的MP3TAG。这是一个免费的工具,也做了工作。花了一段时间才弄明白如何使用它。如果您不想尝试这样做: 将xls(或其他格式)添加到配置中的可编辑文件列表
更新: 还尝试了其中一个答案中建议的MP3TAG。这是一个免费的工具,也做了工作。花了一段时间才弄明白如何使用它。如果您不想尝试这样做:
- 字段:\u文件名
- from:([0-9]{2})([0-9]{2})([0-9]{4})
- 至:$3-$2-$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
可以执行文件名模式转换的工具是 选择
convert
,然后选择filename-filename
我肯定还有其他的工具
(这个答案并不真正符合StackOverflow的精神,但我认为OP不一定在寻找一个自动化的解决方案…基于,但这个答案正确地添加了.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');
}
如果你有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
不需要外部工具
文件名为:ddmmyyyy.xls(例如。
15012010(2010年1月15日)
我想要: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
此命令将把目录“C:/path/to/test folder”下的所有文件ddmmyyyy.xls重命名为yyyymmdd.xls。作为预防措施,请确保在尝试任何解决方案之前备份这些文件。将执行:-)不能经常说,因为目标不是转换xls文件。。。Mp3tag是一个免费的工具,用于通过文件模式(以及其他工具)批量重命名文件,我相信这就是我的目标。谢谢,我在周末尝试过,效果很好。用简短的快速入门指南更新了我的问题。嘿,我的添加了.xls扩展名@亚历克斯:您编辑了它:
$newFilename=$year$一个月$一天你只有这个。对不起,是的,我原来有。我做了不少编辑,因为我忘了东西!正则表达式应该是/^(\d{2})(\d{2})(\d{4})\.xls$/i
,否?谢谢。所有文件都已成功重命名。如果您将2001年9月20日和2009年1月20日的文件放在同一文件夹中进行转换,这不是很危险吗?(即,您尝试将一个名称重命名为已存在的名称,并失败/覆盖)。更好的方法可能是使用一个在该文件夹中没有使用的中间扩展名,然后在最后进行一个大的重命名…@Damien-yeh,你可以做所有这些,但是如果你知道你的输入文件是好的(并且不会覆盖任何内容),你可以不受影响。这是一个一次性问题的快速解决方案+1.同样值得注意的是,可以通过运行Mac OS的Mac或运行Cygwin的windows机器来实现。
# 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
script "C:/Scripts/RenameYYYYMMDD.txt" dir("C:/path/to/test folder")