2010-01-14 5 views
2

У меня есть 1500 файлов, которые названы с неверно dateformat. Я хотел бы переименовать их. Есть ли инструмент, который может это сделать? В противном случае кусок php-кода.переименовать много файлов автоматически один раз - ddmmyyyy.file в yyyymmdd.file

Имена файлов: ddmmyyyy.xls (например, 15012010 для 15.th Jan 2010)

, и я хотел бы: yyyymmdd.xls (например 20100115.xls)

Любой ключ о том, как это можно сделать за 1500 файлов за один раз?

BR. Андерс


UPDATE: Также попробовал Mp3tag, что предлагается в одном из ответов. Это бесплатный инструмент, а также выполнил эту работу. Понадобилось время, чтобы понять, как его использовать. Если вы WANNE попробовать сделать это:

  1. добавить XLS (или другой формат) в список доступных для редактирования файлов конфигурации
  2. выбрать папку для загрузки файлов и пометить файлы на панели, которую нужно изменить
  3. I нажмите кнопку «Конвертировать - Быстро». Также можно сохранить схемы для будущего использования, но я не мог понять, как это сделать.
  4. после нажатия кнопки «конвертировать - быстрый» выбрать «используя регулярное выражение» (только регулярные выражения опция)

А потом вы просто добавить информацию для обработки переименовывать. В моем случае:

  • поле: _FILENAME
  • из: ([0-9] {2}) ([0-9] {2}) ([0-9] {4})
  • до: $ 3- $ 2- $ 1

Теперь все файлы с именем 15012010.xls (ddmmyyyy.xls) будет называться 2010-01-15.xls

+3

В качестве меры предосторожности обязательно сделайте резервную копию файлов, прежде чем пытаться выполнить какие-либо из этих решений. –

+0

Будет делать :-) Нельзя сказать достаточно часто – Tillebeck

ответ

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

} 
+0

Регулярное выражение должно быть '/^(\ d {2}) (\ d {2}) (\ d {4}) \. Xls $/i', no ? –

+0

@Alix Ах да! Пятница здесь ... – alex

+0

Спасибо. Все файлы были переименованы успешно. – Tillebeck

1

Если у вас есть машина Linux с файлами ... Вы можете использовать Баш сделать:

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

+1. Также можно отметить, что Mac работает под управлением Mac OS или Windows-машине под управлением Cygwin. –

+0

Нет необходимости в том, чтобы много внешних при использовании bash. – ghostdog74

0

Инструмент, который может выполнить преобразование файла картина Mp3tag.

Выберите convert, а затем filename - filename.

Я уверен, что есть и другие инструменты!

(Этот ответ не совсем в духе StackOverflow, но я думаю, что ОП не обязательно ищет автоматизированное решение ...)

+0

Целью не является преобразование файлов XLS ... в файлы XLS, но их переименование. – OcuS

+0

Mp3tag - это бесплатный инструмент для пакетного переименования файлов с помощью шаблона файла (среди других инструментов), который я считаю целью. – Pool

+0

Спасибо, я попробовал это в выходные, и все прошло отлично. Обновлен мой вопрос с помощью краткого руководства по быстрому запуску. – Tillebeck

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'); 
} 
+1

Эй, мой добавляет расширение .xls! – alex

+1

@alex: Вы его отредактировали: '$ newFilename = $ year. $ month. $ day, у вас было только это. –

+0

Прости, я сделал изначально. Я сделал немало прав, потому что забыл что-то! – alex

0

если у вас есть Баш

#!/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 

не нужны внешние инструменты.

0

Имена файлов: ddmmyyyy.xls (например 15012010 для 15.th января 2010 г.)

, и я хотел бы: yyyymmdd.xls (например 20100115.xls)

Использование этот скрипт. (http://www.biterscripting.com). Сначала проверьте скрипт в тестовой папке.

Чтобы проверить, сохраните код сценария в файле «C: /Scripts/RenameYYYYMMDD.txt» и введите следующую команду.

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

Эта команда будет переименовать все файлы ddmmyyyy.xls в директории "C:/путь/к/тест папка" для yyyymmdd.xls.