3

Это действительно озадачивает. У меня есть много видео, которые были сохранены с использованием Mac OS, и теперь я должен редактировать их в Windows XP. Я скопировал файлы, используя HFSExplorer. Программное обеспечение для редактирования отказывается открывать файлы с их текущими именами, и до сих пор я не нашел способа пакетного переименования всех файлов.

Имена файлов выглядят так:

клип-2009-10-01 21; 26; 00.mov

Но я подозреваю, что в OSX время было 21:26:00.

Я хотел бы заменить пробел подчеркиванием, а точку с запятой - тире.

Я пробовал несколько приложений массового переименования, с; и:, но тщетно. Также я пробовал rename.pl, но тоже зря.

11 ответов11

4

Обновлено:

Мы предполагаем, что "clip-2009-10-01 21; 26; 00.mov" не является реальным именем файла; одна возможность состоит в том, что фактическое имя файла - "clip-2009-10-01 21:26:00.mov". Однако мы не можем проверить это под Windows.

Возможно, нам не нужно.


Отказоустойчивый метод:

Загрузитесь с Linux LiveCD. Ubuntu 9.04 имеет хорошую поддержку NTFS, и Linux обрабатывает гораздо больше именных символов в именах файлов, чем Windows. Скрипт переименования perl может быть включен как системная команда переименования.


Это-Might- Фактически -Работа Batch метод (New Script!)

Команда DOS DIR/X показывает короткие имена файлов, если они существуют в вашей системе.

$ cmd
c:\test> dir /x
 Volume in drive E is NUVOL
 Volume Serial Number is 80D3-A96D

 Directory of e:\tor\test

10/04/2009  05:15 AM    <DIR>                       .
10/04/2009  05:15 AM    <DIR>                       ..
10/04/2009  05:11 AM                 0 CLIP-2~1.MOV clip-2009-10-01 21;26;00.mov
               1 File(s)              0 bytes
               2 Dir(s)   5,201,670,144 bytes free

Если они существуют, команда REN переместит их на новое имя; новое имя может быть новым (действительным) длинным именем файла.

c:\test> ren CLIP-2~1.MOV "clip-2009-10-01_21-26-00.mov"

Вот как это исправить.

Для пакетной обработки всех них вам необходимо: 1) получить список всех файлов, которые вы хотите переместить; 2) запустить короткий Perl-скрипт для преобразования вашего списка в командный файл с соответствующими командами REN; и 3) запустить полученный пакетный скрипт.

c:\test> dir /x > mybrokenfiles.lst  
$ cat mybrokenfiles.lst | perl -lne 'next if not /MOV/; s/^.{1,39}//; s/^/ren /; s/ (\d\d);(\d\d);(\d\d)/_$1-$2-$3/; print' > fixmybrokenfiles.bat  
c:\test> fixmybrokenfiles.bat  

Командная строка perl предполагает очень специфический формат ввода, поэтому, если в списке DOS отображаются длинные имена файлов, отличные от формата «21; 26; 00.mov», он, вероятно, не будет работать именно так, как вам нужно. Если вы попробуете это, дважды проверьте, что пакетный скрипт выглядит прямо перед его запуском.

Если вы знакомы с Perl (или sed/awk, python и т.д.), Вы можете написать это самостоятельно. Но если DIR/X не показывает короткие имена файлов, ваша система отключит их, и это решение не поможет.


Оригинальный ответ: бесполезно с тем, что мы знаем сейчас, но если вы снова скопируете этот тип файла из OSX, вы можете использовать это ДО копирования в качестве превентивного шага.

Я часто использую командную строку в системах Windows и Linux. В Интернете есть удобный perl-скрипт, который позволяет переименовывать пакетные файлы, используя стандартные регулярные выражения perl (google для rename.pl, чтобы найти его).

В Cygwin для Windows используйте это в каталоге, в котором находятся ваши файлы, чтобы переименовать их:

$ ls
clip-2009-10-01 21;26;00.mov

$ rename.pl 'tr/ ;/_-/;' * 
$ ls
clip-2009-10-01_21-26-00.mov

Я уверен, что моя версия взята из Perl Cookbook:

#!/usr/bin/perl -w
# rename - Larry's filename fixer
$op = shift or die "Usage: rename expr [files]\n";
chomp(@ARGV = <STDIN>) unless @ARGV;
for (@ARGV) {
    $was = $_;
    eval $op;
    die $@ if $@;
    rename($was,$_) unless $was eq $_;
}
2

Проверьте Rename Master, у него есть множество способов манипулировать именами файлов в пакете. Вы хотите проверить вкладку замены .

альтернативный текст

Rename Master является бесплатной.

1

Lupas Rename - это БЕСПЛАТНАЯ программа, разработанная для переименования большого количества файлов. Он работает на Win95, Win98, WinME, WinNT, Win2K и WinXP. Это просто.EXE-файл и не требует никаких внешних библиотек.

Вот некоторые из особенностей:

  • Переименовать файлы и папки
  • Переименовать файлы в рекурсивных подкаталогах
  • Интеграция с оболочкой (щелкните правой кнопкой мыши папку в проводнике, чтобы запустить LupasRename для этих папок)
  • Мгновенный предварительный просмотр (необязательно)
  • Отменить последнюю операцию переименования
  • Создайте пакетный файл для переименования из консоли DOS
  • Создайте пакетный файл для операции UNDO из консоли DOS
  • Сохраните и загрузите ваши параметры в INI-файл
  • Фильтр по любым маскам: .mp3;.mp2 или ???а * .txt ...
  • Заменить подстроку на другую с помощью Matchcase Необязательно
  • Заменить подстроку другой на Matchcase Необязательно в расширении

альтернативный текст

1

Просто сделайте это в Mac или Linux. Это переименует все файлы и папки с помощью: to -

find . -depth -exec rename 's/:/-/g' * {}\;
0

Как и другие решения, Bulk Rename Utility - это утилита, которая сделает эту работу. Я нахожу это очень полезным и простым в использовании для моих потребностей в переименовании файлов.

0

Каковы разрешения на файл? Вы уверены, что имеете разрешение на их переименование? Если нет, возьмите в собственность файлы и попробуйте снова.

0

В предположении, что имена файлов содержат странные и невидимые символы, способ продолжить - использовать имена DOS старого формата 8.3. Чтобы узнать эти имена, используйте параметр -x:

образ

Теперь используйте короткое имя для переименования файла:

ren CLIP-2~1.MOV "clip-2009-10-01_21_26_00.mov"

Если вы используете copy-paste для переименования файла, будьте осторожны, чтобы не распространять странные символы, поэтому не оставляйте пустые символы в новом имени (потому что они могут не быть пустыми).

0

Total commander включает инструмент пакетного переименования с именем Multi-Rename Tool (по умолчанию это сочетание клавиш Ctrl+M).

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

Другой способ - использовать маску переименования - выберите диапазон перед пробелом, добавьте подчеркивание, затем диапазон после пробела, заменив точку с запятой тире с помощью поиска и замены.

0

Мне самому нравится ответ @ ~ quack. +1.

Но для потомков вот что я собирался опубликовать.

Я уже давно использую StExBar в инструментах Стефана. Он добавляет панель инструментов в проводник Windows с несколькими удобными функциями.

http://tools.tortoisesvn.net/

(У него есть несколько инструментов, но этот специфический - StExBar)

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

0

Интересная проблема.

Вы можете написать свой собственный скрипт. Вот один скрипт, который будет работать. Он ЗАМЕНИТ ВСЕ КОЛОНЫ, ПОЛУКОЛОНЫ, ПРОСТРАНСТВА С ПОДЗЕМНЫМ. Я предполагаю, что файлы находятся в E:/, а имена соответствуют шаблону клипа * .mov. Вы можете изменить эти значения в скрипте на ваши правильные значения. Вы можете настроить скрипт еще больше, если хотите.

# Script Mac2WindowsFileTransfer.txt
# Go to directory where files are stored.
cd "E:/"                                     ### CHANGE THIS TO YOUR CORRECT VALUE. ###
# Get a list of clip*.mov files.
var str list ; lf -rng "clip*.mov" > $list   ### CHANGE THIS TO YOUR CORRECT VALUE. ###
# Go thru files one by one.
while ($list <> "")
do
    # Get the next file.
    var str file
    lex "1" $list > $file
    # Create the new name.
    var str newname
    stex -p "^/^l[" $file > $newname
    # REPLACE ALL COLONS, SEMICOLONS,  SPACES WITH UNDERSCORE.
    while ( { sen -r "^(\:\; )^" $newname } > 0 )
        sal -r "^(\:\; )^" "_" $newname
    # Rename file.
    system rename ("\""+$file+"\"") $newname
done

Сохраните скрипт как C:/Scripts/Mac2WindowsFileTransfer.txt. Скрипт находится в режиме битерскриптинга ( http://www.biterscripting.com ). Вы можете скачать битерскрипт бесплатно. Запустите, введя следующую команду в битрейскрипте.

script "C:/Scripts/Mac2WindowsFileTransfer.txt"

Патрик

0

Используйте Linux live CD, чтобы перейти в папку с указанными файлами, а затем:

rename -v 's/\:|\*|\?|\"//g' "{}" \; *.mov

Это удалит большую часть того, что Windows не хотела. Например

2004-01-02_23:58:22.mpg

станет:

2004-01-02_235822.mpg

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .