Как обработать в пакетном режиме, переименовывают файлы, скопированные от OSX до Windows с ':' в именах файлов?

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

Названия файлов похожи на это:

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

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

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

Я попробовал несколько объемов, переименовывают приложения, с; и: но напрасно. Также я попробовал rename.pl, но также и напрасно.

3
задан 22.08.2011, 14:37

10 ответов

Обновленный:

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

Мы, возможно, не должны.


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

Начальная загрузка к Linux LiveCD. Ubuntu 9.04 имеет хорошую поддержку NTFS, и Linux обрабатывает намного больше wonky-characters-in-filenames, чем Windows. Жемчуг переименовывает сценарий, может быть включен как система, переименовывают команду.


Метод пакета This-Might-Actually-Work (новый сценарий!)

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

$ 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) запустить короткий скрипт жемчуга для преобразования списка в пакетный файл с соответствующими командами 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  

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

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


Исходный ответ: не полезный с тем, что мы знаем теперь, но если Вы копируете этот вид файла прочь OSX снова, можно использовать это ПЕРЕД копией как профилактический шаг.

Я использую командную строку много и в Windows и в системах Linux. Существует удобный сценарий жемчуга, плавающий вокруг Интернета, который позволяет пакетный файл, переименовывает использующий стандартный regex's жемчуга (Google для rename.pl для нахождения его).

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

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

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

Вполне уверенный моя версия прибыла из Поваренной книги Perl:

#!/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 $_;
}
4
ответ дан 07.12.2019, 23:19
  • 1
    Обратите внимание, что cygwin не является требованием для этого; я верю ActivePerl, или любой другой интерпретатор Windows Perl работал бы также. – quack quixote 01.10.2009, 23:08
  • 2
    Cygwin. Проблема не то, что файл копирует с OSX. Не будьте см. комментарии к исходному вопросу. – tputkonen 04.10.2009, 10:38
  • 3
    Переименование коротких работ файлов - благодарит за подсказку! – tputkonen 04.10.2009, 20:59

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

alt text

Переименуйте Ведущее устройство, бесплатное программное обеспечение.

2
ответ дан 07.12.2019, 23:19

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

Вот некоторые функции:

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

alt text

1
ответ дан 07.12.2019, 23:19
  • 1
    Проблема - то, что файл копировать с OSX. Могите см. комментарии к исходному вопросу. – tputkonen 04.10.2009, 10:39
  • 2
    Lupas Переименовывает, назвали действие, Удаляют диакритические знаки. Возможно, это нормализует имена файлов немного. В противном случае Босс Файла является другим renamer с 30-дневной пробной версией: theutilityfactory.com/summaries / …. – harrymc 04.10.2009, 18:35

Общий командующий включает инструмент переименования пакета под названием, Мультипереименовывают Инструмент (ярлык по умолчанию является Ctrl+M).

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

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

0
ответ дан 07.12.2019, 23:19

Подобный couiple других решений, Объем Переименовывает Утилиту, утилита, это сделает задание. Я нахожу это очень полезным и простым в использовании для моих объемных потребностей переименования файла.

0
ответ дан 07.12.2019, 23:19

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

0
ответ дан 07.12.2019, 23:19
  • 1
    хорошая мысль и что-то для проверения "проверки простой материал сначала" принцип но он упомянул эту ошибку от одного из инструментов: "Система не может найти файл указанным". я ожидал бы, что проблемы полномочий дадут другую ошибку. – quack quixote 04.10.2009, 15:29
  • 2
    Нет никакой проблемы с полномочиями. Спасибо за перевод в рабочее состояние этого, хотя, поскольку я забыл упоминать это. Windows Vista Ultimate – tputkonen 04.10.2009, 16:50

Самостоятельно, мне нравится ответ ~quack. +1.

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

Я использовал StExBar в Инструментах Stefan довольно долгое время теперь. Это добавляет панель инструментов на Windows Explorer с несколькими удобными функциями.

http://tools.tortoisesvn.net/

(У него есть несколько инструментов, но этим определенным является StExBar),

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

enter image description here

0
ответ дан 07.12.2019, 23:19

Под предположением, что имена файлов содержат странные и невидимые символы, способ продолжиться состоит в том, чтобы использовать названия DOS старых 8,3 форматов. Для обнаружения этих имен используют-x параметр:

image

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

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

При использовании вставки копии для переименования файла, бойтесь распространять странные символы, не оставляйте незаполненные символы на новое имя (потому что они не могли бы действительно быть пробелом).

0
ответ дан 07.12.2019, 23:19
  • 1
    Спасибо, это, кажется, работает. Однако я должен придумать сценарий, поскольку возможно переименовать их вручную также в Проводнике. – tputkonen 04.10.2009, 20:59

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

Можно записать собственный сценарий. Вот один сценарий, который будет работать. Это ЗАМЕНИТ ВСЕ ДВОЕТОЧИЯ, ТОЧКИ С ЗАПЯТОЙ, ПРОБЕЛЫ С ПОДЧЕРКИВАНИЕМ. Я предположу, что файлы находятся в E:/, и имена следуют за шаблоном clip*.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. Сценарий находится в biterscripting (http://www.biterscripting.com). Можно загрузить бесплатно biterscripting. Работайте путем ввода следующей команды в biterscripting.

script "C:/Scripts/Mac2WindowsFileTransfer.txt"

Patrick

0
ответ дан 07.12.2019, 23:19

Используйте Linux живой CD для получения до папки с упомянутыми файлами и затем:

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

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

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

станет:

2004-01-02_235822.mpg
0
ответ дан 07.12.2019, 23:19

Теги

Похожие вопросы