So benennen Sie 80.000 Dateien gleichzeitig in Windows um

8

Ich habe 80.000 Dateien in einem Ordner und muss sie alle umbenennen

filename.jpg

zu

._filename.jpg

in Windows-Umgebung denke ich von dos. Der Grund ist, dass ich diese Dateien von Unix in ein tar.gz komprimiert und in Windows kopiert habe und aus irgendeinem Grund die Dateinamen geändert haben.

Können Sie mir sagen, was der Befehl dazu ist? Vielen Dank

aneuryzm
quelle

Antworten:

3

Sie können den eingebauten Befehl renameoder verwendenren :

ren *.jpg ._*.jpg

Versuchen Sie es jedoch wie bei all diesen Dingen zuerst in einem Verzeichnis, das nur wenige Dateien enthält.

ChrisF
quelle
1
Ich mag Ihren Ansatz, aber ich habe zwei Probleme: (1) Die ersten Buchstaben der Dateinamen werden ersetzt. Mit anderen Worten, das "._" wird nicht am Anfang hinzugefügt, sondern ersetzt die ersten beiden Buchstaben. (2) "._" funktioniert eigentlich nicht. Wenn ich zum Beispiel "__" verwende, funktioniert es. Ich denke der Punkt "." gibt einige Probleme
aneuryzm
@Patrick - Ich muss zugeben, dass ich keine Chance hatte, dies vollständig zu testen, und ja, ich denke, Sie haben Recht mit dem Punkt, der Probleme verursacht.
ChrisF
Dies ist falsch und liegt nicht an den Punkten. renkann nur Text durch Text gleicher Länge ersetzen. Wenn Sie beispielsweise Dateien haben file1.txtund das tun file2.txt, ren file*.txt blah*.txtwas Sie erwarten (Sie haben jetzt Dateien blah1.txtund blah2.txt). Wenn Sie dann jedoch ren blah*.txt myfile*.txtden Befehl bombs out eingeben, weil er blah1.txtin myfile.txt(nicht myfile1.txt) umbenannt wird und dann nicht umbenannt werden kann blah2.txt, myfile.txtweil diese Datei bereits vorhanden ist.
David Richerby
15

Hier ist eine Möglichkeit, PowerShell zu verwenden:

Navigieren Sie zu Ihrem Ordner und führen Sie diesen Befehl aus

Get-ChildItem *.jpg | Rename-Item -newname {"._" + $_.Name}

Extra Bonus Kurzversion:

gci *.jpg | ren -newname {"._" + $_.Name}
Siim K.
quelle
6

Ich habe 2 Lösungen:

  1. Alle Dateien befinden sich im selben Ordner

    • Führen Sie an der Eingabeaufforderung für diesen Ordner Folgendes aus:

      for /f "delims=¯" %i in ('dir /b /on') do ren "%i" "._%i"
      
  2. Komplettlösung, wenn sich Dateien in Unterordnern befinden UND wenn Sie die ersten "n" Zeichen durch eine gewünschte Zeichenfolge ersetzen möchten: D.

    • Erstellen Sie eine Batch-Datei mit dem folgenden Befehl
    • Ändern Sie die variablen Parameter nach Ihren Wünschen
      • path: In ""den Stammpfad Ihrer Dateien einfügen (z. B. "C: \ Dokumente und Einstellungen \ Benutzer \ Desktop \ Neuer Ordner").
      • numfirstchars2replace: Geben Sie eine Zahl mit den ersten zu ersetzenden Zeichen ein (in Ihrem Fall 2).
      • str2put: Fügen Sie eine Zeichenfolge als Präfix des neuen Dateinamens ein (in Ihrem Fall ._)
    • Führen Sie es in einem anderen Ordner als den Dateien aus


@echo off

::only to tell user what this bat are doing
echo.1.initializing...

::enable that thing to allow, for example, incremental counter in a for loop :)
echo.- EnableDelayedExpansion
SETLOCAL EnableDelayedExpansion

::variables
echo.- variables
:: - place here the absolute root path of your files
set path="put here where are the root folder of your files"
set pathbak=%cd%
set numfirstchars2replace=2
set str2put=._

::go to %path% and its driveletter
echo.- entering the path you want
for /f "delims=¯" %%i in ('echo.%path%') do %%~di
cd %path%

::search all subfolders and save them to a temp file
echo.- searching for subfolders
echo.%path%>%temp%\tmpvar.txt
for /f "delims=¯" %%i in ('dir /s /b /on /ad') do echo."%%i">>%temp%\tmpvar.txt

::execute command for root folder and all found subfolders
echo.
echo.2.executing...
for /f "delims=¯" %%i in (%temp%\tmpvar.txt) do (
  cd %%i
  echo.- in folder: %%i
  for /f "delims=¯" %%j in ('dir /b /on /a-d') do (
    set newname=%%j
    set newname=!newname:~%numfirstchars2replace%,1000!
    echo.- renaming from "%%j" to "%str2put%!newname!"...
    ren "%%j" "%str2put%!newname!"
  )
)

echo.
echo.3.exiting...
::return to %pathbak% and its driveletter
for /f "delims=¯" %%i in ('echo.%pathbak%') do %%~di
cd %pathbak%

@echo on
Kokbira
quelle
vollständig getestet :) Es löst Ihr Problem, einschließlich einiger Spezifikationen, die Sie im @ ChrisF-Kommentar angeben. Hinweis: Wenn in "delims = ¯" "¯" in einem Dateinamen verwendet wird, ändern Sie "¯" durch ein anderes Zeichen, von dem Sie wissen, dass es nicht in den Dateinamen verwendet wird
kokbira
hat wegen Ihres unglaublich langen Skripts abgestimmt, um einfach eine Schleife zu machen und etw umzubenennen. :)
Wullxz
Nun, zu Recht könnte ich eine "for / f" -Schleife mit allen nach Namen sortierten Dateien erstellen und sie dann in "._lenameX.jpg" mit X als Bestellnummer umbenennen, aber ich dachte in gewisser Weise, dies für andere Fälle zu tun - Wenn in Zukunft ein ähnliches Problem auftritt, kann jemand einige Befehle ändern ...
Kokbira
Sie können "delims =" anstelle von "delims = ¯" verwenden (das habe ich vergessen: D). Sie können auch for / f anstelle von for / f "delims =" verwenden, da es in diesem Fall das tut, was ich will ...
kokbira
3

Wenn sich alle im selben Ordner befinden, können Sie sie alle mit Control+ auswählen Aund dann drücken F2, um einen von ihnen umzubenennen. Alle nachfolgenden Dateien werden als Datei (2), Datei (3) usw. Benannt

bruno077
quelle
3

Versuchen Sie Powershell (in Windows 7 vorinstalliert):

Get-Childitem /path/to/your/files | foreach-object { move-item $_ $("._" + $_.name) }

(habe es in meinem Download-Verzeichnis getestet.)

Bearbeiten : Der Code von Siim K fügt jedem "._Dateinamen.jpg" ein zusätzliches ".jpg" hinzu. Entfernen Sie das letzte ".jpg" im Code von Siim K und Sie haben einen kurzen, eleganten Code zum Umbenennen Ihrer Dateien.

wullxz
quelle
danke, aktualisiert. Wiederverwendeter Code aus einem ähnlichen Umbenennungsbefehl, der die Erweiterungsmanipulation erforderte und nicht bemerkte.
Siim K
3

Total Commander hat ein wirklich schönes Multi-Umbenennungs-Tool.

György Andrasek
quelle
0

Ich habe immer festgestellt, dass Flash Renamer ein gutes Werkzeug zum Umbenennen von Dateien in Stapeln ist.

Es hat Test- und Vollversionen (20 US-Dollar) und kann Dateien basierend auf Metadaten umbenennen - sehr nützlich zum Umbenennen von MP3-Dateien, für die ich sie meistens verwende.

ajcw
quelle
0

Wenn Sie nach einer benutzerfreundlichen Methode zum Umbenennen in großen Mengen suchen , können Sie das kostenlose Tool Ant Renamer ausprobieren . Es gibt eine große Liste von Aktionen, die Sie ausführen können, und es bietet auch eine praktische Vorschau, bevor Sie eine Umbenennung vornehmen . Ich benutze es oft, wenn ich mit meinen Musik-, Foto- oder Videobibliotheken herumspiele.

Chris
quelle
0

Ich habe dieses Freeware-Programm File Renamer mit großartigen Ergebnissen verwendet. Viele verschiedene Filter und Optionen sowie die Möglichkeit, Ergebnisse zu testen. Eine etwas veraltete Benutzeroberfläche vielleicht, funktioniert aber wie ein Champion.

http://www.webxpace.com/software/freeware.shtml#FileRenamer

Mark A.
quelle