Aktualisiert :
Wir gehen davon aus, dass "clip-2009-10-01 21; 26; 00.mov" nicht der tatsächliche Dateiname ist. Eine Möglichkeit ist, dass der tatsächliche Dateiname "clip-2009-10-01 21: 26: 00.mov" ist. Dies kann jedoch unter Windows nicht überprüft werden.
Möglicherweise müssen wir nicht.
Ausfallsichere Methode :
Starten Sie eine Linux LiveCD. Ubuntu 9.04 bietet eine gute NTFS-Unterstützung, und Linux verarbeitet viel mehr Witzbuchstaben als Dateinamen. Das Perl-Umbenennungsskript kann als Umbenennungsbefehl des Systems enthalten sein.
This-Might- Eigentlich -Work Batch - Verfahren (New Script!)
Der DOS-Befehl DIR / X zeigt kurze Dateinamen an, sofern diese auf Ihrem System vorhanden sind .
$ 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
Wenn sie vorhanden sind, werden sie mit dem Befehl REN unter einen neuen Namen verschoben. Der neue Name kann ein neuer (gültiger) langer Dateiname sein.
c:\test> ren CLIP-2~1.MOV "clip-2009-10-01_21-26-00.mov"
So beheben Sie einen.
Um alle im Stapel verarbeiten zu können, müssen Sie 1) eine Liste aller Dateien erstellen, die Sie verschieben möchten; 2) Führen Sie ein kurzes Perl-Skript aus, um Ihre Liste mit den entsprechenden REN-Befehlen in eine Stapeldatei zu konvertieren. und 3) das resultierende Batch-Skript ausführen.
c:\test> dir /x > mybrokenfiles.lst $ cat mybrokenfiles.lst | perl -lne 'next if not /MOV/; s/^.//; s/^/ren /; s/ (\d\d);(\d\d);(\d\d)/_$1-$2-$3/; print' > fixmybrokenfiles.bat c:\test> fixmybrokenfiles.bat
Die perl-Befehlszeile setzt ein ganz bestimmtes Eingabeformat voraus. Wenn also in der DOS-Auflistung lange Dateinamen in einem anderen Format als dem Format "21; 26; 00.mov" angezeigt werden, wird sie wahrscheinlich nicht das tun, was Sie möchten. Wenn Sie es versuchen, überprüfen Sie, ob das Batch-Skript richtig aussieht, bevor Sie es ausführen.
Wenn Sie mit Perl (oder Sed / Awk, Python oder was auch immer) vertraut sind, können Sie dies selbst schreiben. Wenn DIR / X jedoch nicht die kurzen Dateinamen anzeigt, sind diese in Ihrem System deaktiviert, und diese Lösung hilft nicht.
Ursprüngliche Antwort : Nicht nützlich für das, was wir jetzt wissen, aber wenn Sie diese Art von Datei erneut von OSX kopieren, können Sie dies VOR dem Kopieren als präventiven Schritt verwenden.
Ich benutze die Kommandozeile viel auf Windows- und Linux-Systemen. Es gibt ein praktisches Perl-Skript im Internet, das die Umbenennung von Stapeldateien mit Standard-Perl-Regex ermöglicht (google for rename.pl, um es zu finden).
Verwenden Sie unter Cygwin unter Windows dies in dem Verzeichnis, in dem sich Ihre Dateien befinden, um sie umzubenennen:
$ ls clip-2009-10-01 21;26;00.mov $ rename.pl 'tr/ ;/_-/;' * $ ls clip-2009-10-01_21-26-00.mov
Ziemlich sicher, dass meine Version aus dem Perl-Kochbuch stammt :
#!/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 $_; }