Wie kann ich Batch-Dateien umbenennen, die von OSX nach Windows kopiert wurden, mit ':' in Dateinamen

5553
tputkonen

Das ist wirklich rätselhaft. Ich habe viele Videos, die unter Mac OS gespeichert wurden, und jetzt muss ich sie unter Windows XP bearbeiten. Ich habe Dateien mit HFSExplorer kopiert. Bearbeitungssoftware weigert sich, die Dateien mit ihren aktuellen Namen zu öffnen, und bisher habe ich keine Möglichkeit gefunden, alle Dateien stapelweise umzubenennen.

Die Namen der Dateien sehen folgendermaßen aus:

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

Ich vermute aber, dass es unter OSX 21:26:00 Uhr war.

Ich möchte das Leerzeichen durch einen Unterstrich und Semikola mit Bindestrich ersetzen.

Ich habe mehrere Anwendungen zum Umbenennen von Dateien ausprobiert. und:, aber vergebens. Ich habe auch rename.pl ausprobiert, aber auch vergeblich.

3
Wenn alle Namen ein festes Format haben, können Sie dies mit einer Batch-Datei tun. Sie werden jedoch am besten ein Werkzeug wie "John T" verwenden. Matthew Whited vor 14 Jahren 0
Ich habe den Verdacht, dass die Dateinamen nicht wirklich "clip-2009-10-01 21; 26; 00.mov" sind, auch wenn sie so aussehen. Bei Win-Systemen ist ":" nicht als Dateinamenzeichen zulässig, bei anderen Dateisystemen ist dies jedoch zulässig. Wenn der Dateiname eigentlich "clip-2009-10-01 21: 26: 00.mov" ist, wird er NICHT korrekt angezeigt (das ":" s wird wahrscheinlich als ";") angezeigt. Manuelles Umbenennen würde noch funktionieren. Einige dieser Tools, die Sie nicht finden konnten, funktionieren möglicherweise, wenn Sie versuchen, ":" durch "-" zu ersetzen. quack quixote vor 14 Jahren 0
Vielen Dank für einen interessanten Einblick. Ich habe Bulk Rename Utility und Lupas ausprobiert, aber beide scheiterten auch mit:. tputkonen vor 14 Jahren 0
ok, zwei weitere Ideen, eine wäre ausfallsicher, wenn wir das Problem richtig diagnostiziert haben. siehe meine Antwort quack quixote vor 14 Jahren 0
Dies ist auch dieser Frage sehr ähnlich: http://superuser.com/questions/31587/how-to-force-windows-xp-to-rename-a-file-with-a-special-character quack quixote vor 14 Jahren 0
hat der perl script-generator, den ich gepostet habe, funktioniert? oder ist die tatsächliche DIR / X-Ausgabe defekt? quack quixote vor 14 Jahren 0
Festzustellen, dass OS X auch kein ":" in Dateinamen zulässt. Früher war ":" das Verzeichnistrennzeichen, wofür Windows "\" verwendet. deceze vor 14 Jahren 0
@deceze danke für die Info. Der Hauptvorteil ist, dass einige Zeichen aus den OSX-Dateinamen in Windows nicht zugelassen wurden, was dazu führte, dass der angezeigte Dateiname falsch war. quack quixote vor 14 Jahren 0

11 Antworten auf die Frage

4
quack quixote

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 $_; } 
Beachten Sie, dass cygwin hierfür keine Voraussetzung ist. Ich glaube, dass ActivePerl oder ein anderer Windows Perl-Interpreter ebenfalls funktionieren würde. quack quixote vor 14 Jahren 0
Ich habe das schon probiert, aber das reicht nicht. Der Name der Datei wird nicht geändert. Ich fange an zu denken, dass in meiner Umgebung etwas Seltsames ist, ich habe einfach keine Ahnung, was. tputkonen vor 14 Jahren 0
Welche Version? cygwin oder activeperl? wenn cygwin, welche perl-version? Meine Beispielnutzung war ein tatsächlicher Test Ihres Dateinamens, also hat es für mich funktioniert. quack quixote vor 14 Jahren 0
Cygwin Das Problem kann sein, dass die Datei von OSX kopiert wurde. Bitte beachten Sie die Kommentare zur ursprünglichen Frage. tputkonen vor 14 Jahren 0
Das Umbenennen der kurzen Dateien funktioniert - danke für den Tipp! tputkonen vor 14 Jahren 0
woot! funktioniert die DIR / X-Ausgabe mit Perl, um das Batch-Skript korrekt zu generieren? quack quixote vor 14 Jahren 0
Es tut - danke !! Da die Dateien groß sind, habe ich die Zeile ein wenig geändert in: cat mybrokenfiles.lst | perl -lne 'next wenn nicht / MOV /; s / ^. //; s / ^ / ren /; s / (\ d \ d); (\ d \ d); (\ d \ d) / _ $ 1- $ 2- $ 3 /; print '> fixmybrokenfiles.bat Möglicherweise war das auch mit awk möglich. Danke vielmals!! tputkonen vor 14 Jahren 0
Süss. ja, awk könnte es auch oder sed. ich bin mit perl besser vertraut, so dass es dort einfacher war (in meinem sed-Versuch musste der reguläre rex der Substitutionen auch allen Klammern entkommen, war also schwer zu lesen). quack quixote vor 14 Jahren 0
Leider habe ich nur eines davon auf meinem System erstellt und keinen kurzen Dateinamen zu reparieren. Sie müssen das Laufwerk zum ursprünglichen System zurückbringen, um es umzubenennen. :( quack quixote vor 14 Jahren 0
Eine weitere fantastische Antwort von @quack quixote Josh vor 13 Jahren 0
2
John T

Schauen Sie sich Rename Master an, es gibt unzählige Möglichkeiten, Dateinamen im Stapel zu bearbeiten. Sie sollten die Registerkarte " Ersetzen" auschecken.

Alt-Text

Master umbenennen ist Freeware.

1
harrymc

Lupas Rename ist ein FREEWARE-Programm, das zum Umbenennen einer großen Anzahl von Dateien entwickelt wurde. Es funktioniert unter Win95, Win98, WinME, WinNT, Win2K und WinXP. Es handelt sich um eine einfache EXE-Datei, die keine anderen externen Bibliotheken benötigt.

Hier sind einige der Funktionen:

  • Benennen Sie Dateien und Ordner um
  • Benennen Sie Dateien in rekursiven Unterverzeichnissen um
  • Shell-Integration (Rechtsklick auf einen Ordner im Explorer, um LupasRename für diesen Ordner zu starten)
  • Sofortige Vorschau (optional)
  • Machen Sie den letzten Umbenennungsvorgang rückgängig
  • Erstellen Sie eine Batch-Datei, die von einer DOS-Konsole aus umbenannt werden soll
  • Erstellen Sie eine Batch-Datei für den UNDO-Vorgang in einer DOS-Konsole
  • Speichern und laden Sie Ihre Optionen in eine INI-Datei
  • Filtern Sie nach beliebigen Masken: .mp3; .mp2 oder ein * .txt ...
  • Ersetzen Sie einen Teilstring durch einen anderen durch Matchcase Optional
  • Ersetzen Sie einen Teilstring durch einen anderen durch Matchcase Optional in der Erweiterung

Alt-Text

Wenn ich auf "Umbenennen" klicke, heißt es "Das System kann die angegebene Datei nicht finden." tputkonen vor 14 Jahren 0
Ich habe es einfach ohne Probleme ausprobiert. Sie sollten alle Dateien zum Umbenennen auswählen und dies in 2 Schritten durchführen: (1) Ersetzen Sie den Text [Leerzeichen] durch diesen neuen Text [_] und dann umbenennen (2) Gleich für; zu - harrymc vor 14 Jahren 0
Das Problem kann sein, dass die Datei von OSX kopiert wurde. Bitte beachten Sie die Kommentare zur ursprünglichen Frage. tputkonen vor 14 Jahren 0
Lupas Rename hat eine Aktion namens Akzente entfernen. Möglicherweise werden dadurch die Dateinamen ein wenig normalisiert. Falls nicht, ist File Boss ein weiterer Umbenenner mit einer 30-tägigen Testversion: http://www.theutilityfactory.com/summaries/rename-files-advanced-formatting.htm. harrymc vor 14 Jahren 0
1
patrick

Tun Sie dies einfach in Mac oder Linux. Dadurch werden alle Dateien und Ordner mit einem:

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

Total Commander enthält ein Batch-Umbenennungstool namens Multi-Rename-Tool (Standardverknüpfung ist Strg + M).

In Ihrem Fall können Sie die Dateien umbenennen, indem Sie process zweimal ausführen, einmal den Platz und einmal das Semikolon ersetzen.

Eine andere Möglichkeit ist die Umbenennungsmaske: Wählen Sie einen Bereich vor dem Leerzeichen aus, fügen Sie einen Unterstrich hinzu, dann einen Bereich nach dem Leerzeichen, und ersetzen Sie das Semikolon durch einen Bindestrich mit Suchen und Ersetzen.

0
JMD

Ich selbst mag die Antwort von @ ~ quack. +1.

Aber für die Nachwelt hier, was ich posten würde.

Ich benutze StExBar schon seit geraumer Zeit in Stefans Tools. Es fügt dem Windows Explorer eine Symbolleiste mit mehreren praktischen Funktionen hinzu.

http://tools.tortoisesvn.net/

(Er hat mehrere Tools, aber dieses spezielle ist StExBar)

Sie können die angeforderte Umbenennung mit zwei einfachen Befehlen durchführen. Hier ist ein Screenshot des ersten, der Ihnen eine Vorschau der umbenannten Dateien und deren Umbenennung zeigt.

0
Bonus

Ähnlich wie einige andere Lösungen ist das Bulk Rename Utility ein Dienstprogramm, das die Arbeit erledigt . Ich finde es sehr nützlich und benutzerfreundlich, wenn es um die Umbenennung von Bulk-Dateien geht.

Bei mir funktioniert das nicht. Wie Sie in der Spalte "Neuer Name" sehen können, wird sie nicht ersetzt. with _: http://i37.tinypic.com/vqjhqq.jpg Wenn ich auf "Umbenennen" klicke, heißt es, dass die Datei keinen Namenswechsel erfordert. tputkonen vor 14 Jahren 0
Für mich ok getestet (unter Win 7 64bit), zugegebenermaßen mit einer Textdatei, die ich gerade in denselben Dateinamen umbenannt habe, als mit einer tatsächlich unter OSX erstellten mov-Datei. Bonus vor 14 Jahren 0
0
MDMarra

Wie lauten die Berechtigungen für die Datei? Bist du sicher, dass du die Erlaubnis hast, sie umzubenennen? Wenn nicht, übernehmen Sie den Besitz der Dateien und versuchen Sie es erneut.

Ein guter Gedanke und etwas, das nach dem Prinzip "Check simple stuff first" zu prüfen ist, aber er erwähnte diesen Fehler in einem der Tools: "Das System kann die angegebene Datei nicht finden." Ich würde erwarten, dass Berechtigungsprobleme einen anderen Fehler geben. quack quixote vor 14 Jahren 0
Es gibt kein Problem mit den Berechtigungen. Danke, dass Sie dies angesprochen haben, da ich vergessen habe, es zu erwähnen. tputkonen vor 14 Jahren 0
0
harrymc

Unter der Annahme, dass die Dateinamen seltsame und unsichtbare Zeichen enthalten, können Sie DOS-Namen des alten 8.3-Formats verwenden. Um diese Namen herauszufinden, verwenden Sie den Parameter -x:

Bild

Benutze jetzt den Kurznamen, um die Datei umzubenennen:

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

Wenn Sie die Datei mithilfe von Kopieren und Einfügen umbenennen, dürfen Sie die seltsamen Zeichen nicht weitergeben. Lassen Sie also keine Leerzeichen im neuen Namen (da diese möglicherweise nicht wirklich leer sind).

Danke, das scheint zu funktionieren. Ich muss jedoch ein Skript entwickeln, da es möglich ist, sie auch im Explorer manuell umzubenennen. tputkonen vor 14 Jahren 0
0

Interessantes Problem.

Sie können Ihr eigenes benutzerdefiniertes Skript schreiben. Hier ist ein Skript, das funktionieren wird. Es ersetzt ALLE COLONS, SEMICOLONS, RÄUME MIT UNDERSCORE. Ich gehe davon aus, dass sich die Dateien in E: / befinden und die Namen dem Muster des Clips * .mov folgen. Sie können diese Werte im Skript in Ihre korrekten Werte ändern. Wenn Sie möchten, können Sie das Skript noch weiter anpassen.

# 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 

Speichern Sie das Skript als C: /Scripts/Mac2WindowsFileTransfer.txt. Das Skript ist in Biterscripting ( http://www.biterscripting.com ). Sie können das Biterscripting kostenlos herunterladen. Führen Sie das aus, indem Sie den folgenden Befehl in Biterscripting eingeben.

script "C:/Scripts/Mac2WindowsFileTransfer.txt" 

Patrick