Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Dateien nach Ordner umbenennen

Frage Entwicklung Batch & Shell

Mitglied: Schnubbi8718

Schnubbi8718 (Level 1) - Jetzt verbinden

22.06.2011 um 13:57 Uhr, 4765 Aufrufe, 7 Kommentare

Tach, ich suche eine Möglichkeit Dateien in einem Ordner nach dem Ordnernamen umzubenennen. Und wenn weitere Dateien vorhanden sind, sollten die nach Gröse Sortiert (größtes zuerst) dann das nächst kleinere mit "-2" "-3" enden. Das alles in eine Schleife gepackt, damit ich das bei vielen Ordnern machen kann.

Zum verständnis nochmal:

ordner 1
---DateiX
---DateiY
Ordner 2
---DateiL
---Datei A
---Datei B


Wird zu
Ordner 1
---Ordner 1
---Ordner 1-2
Ordner 2
---Ordner 2
---Ordner 2-1
---Ordner 2-2

Hab hier schon mal ein Gerüst.
01.
@echo off 
02.
FOR /F "delims=" %%i in ('dir /B /AD') do ( 
03.
FOR /F "delims=" %%j in ('dir "%%i" /B /A-D') do rename "%%i\%%j" "%%i%%~xj" 
04.
)
Der Code benennt meine Dateinamen so um, dass sie heißen wie der Ordner, in dem sie sich befinden. Leider aber nur je eine Datei pro Endung. Jetzt kommt halt imme die Meldung dass die Datei schon vorhanden ist (wenn mehrere gleiche endungen vorhanden sind). Und da würde ich euch bitten mir weiter zu helfen.

Danke
Greez Schnubbi8718
Mitglied: Friemler
22.06.2011 um 14:38 Uhr
Hallo Schnubbi,

könnte so gehen:
01.
@echo off 
02.
 
03.
setlocal 
04.
 
05.
 
06.
set "SrcDir=E:\test" 
07.
 
08.
 
09.
for /f "delims=" %%d in ("%SrcDir%") do set "ParentDir=%%~nxd" 
10.
 
11.
for /f "delims=" %%f in ('dir /b /a:-d "%SrcDir%" 2^>NUL') do ( 
12.
  set "Item=%%~xf" 
13.
  call :ConcatString Extensions 
14.
15.
 
16.
for %%e in (%Extensions%) do ( 
17.
  set /a Cntr=1 
18.
  set "Ext=%%e" 
19.
 
20.
  for /f "delims=" %%f in ('dir /b /o:-s /a:-d "%SrcDir%\*%%e" 2^>NUL') do ( 
21.
    set "File=%SrcDir%\%%f" 
22.
    call :RenameFile 
23.
    set /a Cntr+=1 
24.
25.
26.
 
27.
exit /b 
28.
 
29.
 
30.
 
31.
:RenameFile 
32.
  ren "%File%" "%ParentDir%-%Cntr%%Ext%" 
33.
exit /b 
34.
 
35.
 
36.
 
37.
:ConcatString 
38.
  call set "Compare1=%%%1%%" 
39.
  call set "Compare2=%%%1:%Item%=%%" 
40.
  if "%Compare1%" neq "" if "%Compare1%" neq "%Compare2%" exit /b 
41.
  call set "%1=%%%1%% %%Item%%" 
42.
exit /b
In Zeile 9 wird der Name des Verzeichnisses ermittelt, das die umzubenennenden Dateien enthält.

In der FOR-Schleife in den Zeile 11 bis 14 werden alle vorkommenden Dateiendungen ermittelt. und in der Variablen Extensions durch Leerzeichen getrennt abgelegt. Das eigentliche Zusammensetzen der Variablen wird im Unterprogramm ConcatString erledigt, das den Namen der zusammenzusetzenden Variablen als Parameter erwartet.

Die einzelnen Erweiterungen werden von der FOR-Schleife in Zeile 16 abgearbeitet.

Die FOR-Schleife in Zeile 20 ermittelt alle Dateien mit der gerade aktuellen Erweiterung absteigend sortiert nach Größe und ruft das Unterprogramm RenameFile auf, wo die Umbenennung stattfindet.

Die erste Datei eines Typs erhält also schon den Zusatz -1. Ich hoffe das ist auch in Ordnung.

Wenn die Nummerierung unabhängig vom Dateityp sein soll, musst Du Dich nochmal melden.

Gruß
Friemler


[EDIT]
Script geändert:
Jeder Dateityp wird jetzt nur noch einmal in die Variable Extensions eingetragen. Dadurch werden überflüssige Umbenennungsversuche vermieden.
[/EDIT]
Bitte warten ..
Mitglied: Skyemugen
22.06.2011 um 14:46 Uhr
Aloha Schnubbi8718 und willkommen im Forum,

Zitat von Friemler:
Wenn die Nummerierung Typunabhängig sein soll, musst Du Dich nochmal melden.

Was natürlich nicht bedeutet: „Wenn es passt, sehen wir eventuell einen grünen Haken aber dich nie wieder“ ... wie es leider so oft vorkommt ... was ist schon Feedback

greetz André
Bitte warten ..
Mitglied: Schnubbi8718
22.06.2011 um 15:05 Uhr
Vielen Dank für die schnelle Antwort. Aber könntest du noch eine Kleinigkeit dran ändern?

Das bezieht sich jetz immer nur auf ein Verzeichnis. Mein Problem ist, dass ich etwa 900 Verzeichnisse habe. Da müsste ich jetzt für jedes verzeichnis die batch an der stelle set "SrcDir=E:\test" verändern, oder?
Gibts ne möglichkeit, dass ich auf dem nächsten übergeordneten Ordner die batch Datei lege, und die batch macht dann alle Ordner eine "Etage" tiefer durch?

Vielen Dank
Bitte warten ..
Mitglied: 60730
22.06.2011 um 15:14 Uhr
moin,

"eigentlich" schreiben wir doch, um anderen einen Tipp zu geben und nicht, weil wir deren Arbeit machen und weil wir ausschliesslich an den batchen die Änderungsrechte haben.

  • Im ernst - du willst das für dich und du mußt im Zweifel mal was ändern und dann ist keiner hier?

So geht das nicht...
Hast du dir die restlichen Beiträge vom Friemler mal angesehen?
AFAIK hat der eine Anleitung für die Schleifchen hier hingemalt....

Das bezieht sich jetz immer nur auf ein Verzeichnis. Mein Problem ist, dass ich etwa 900 Verzeichnisse habe.
Geht das irgendwie genauer?

  • Hast du eine Liste die abgearbeitet werden soll?
  • Sind das eh alle?
  • Gibt es eine Ausschlußliste, die nicht abgearbeitet werden soll?
Bitte warten ..
Mitglied: Friemler
22.06.2011 um 15:19 Uhr
Hallo Schnubbi,

Ok, ist nur eine kleine Erweiterung. Nimm das folgende Script. Wundere Dich aber nicht, wenn das bei der Datenmenge eine Weile dauert.
01.
@echo off 
02.
 
03.
setlocal 
04.
 
05.
 
06.
set "SrcDir=E:\test" 
07.
 
08.
for /d %%d in ("%SrcDir%\*.*") do ( 
09.
  set "ActDir=%%d" 
10.
  call :ProcessDir 
11.
12.
 
13.
exit /b 
14.
 
15.
 
16.
 
17.
:ProcessDir 
18.
  for /f "delims=" %%f in ("%ActDir%") do set "ParentDir=%%~nxf" 
19.
 
20.
  for /f "delims=" %%f in ('dir /b /a:-d "%ActDir%" 2^>NUL') do ( 
21.
    set "Item=%%~xf" 
22.
    call :ConcatString Extensions 
23.
24.
 
25.
  for %%e in (%Extensions%) do ( 
26.
    set /a Cntr=1 
27.
    set "Ext=%%e" 
28.
 
29.
    for /f "delims=" %%f in ('dir /b /o:-s /a:-d "%ActDir%\*%%e" 2^>NUL') do ( 
30.
      set "File=%ActDir%\%%f" 
31.
      call :RenameFile 
32.
      set /a Cntr+=1 
33.
34.
35.
exit /b 
36.
 
37.
 
38.
 
39.
:RenameFile 
40.
  ren "%File%" "%ParentDir%-%Cntr%%Ext%" 
41.
exit /b 
42.
 
43.
 
44.
 
45.
:ConcatString 
46.
  call set "Compare1=%%%1%%" 
47.
  call set "Compare2=%%%1:%Item%=%%" 
48.
  if "%Compare1%" neq "" if "%Compare1%" neq "%Compare2%" exit /b 
49.
  call set "%1=%%%1%% %%Item%%" 
50.
exit /b
Gruß
Friemler
Bitte warten ..
Mitglied: Schnubbi8718
22.06.2011 um 15:35 Uhr
Vielen Herzlichen Dank Friemler, du bist echt ein Ass.

Ich bin ein Enduser, der sich ab und an mit komplizierteren Dingen beschäftigt, also werde ich jetzt nicht jeden Tag hier sein und das Forum durchlesen. Seid mir nicht böse deswegen, aber es ist nun mal so. Ihr seid von einem anderen Board empfohlen worden, (euer Ruf ist nicht schlecht) deswegen und durch google bin ich auf euch gekommen.

Ich hab etwas erfahrung mit Delphi (Pascal), hab früher mit BASIC ein bisschen programmiert und aktuell hab ich vor mir Java beizubringen (über einen Bekannten, der das im Studium lernt). Wenn ihr also Fragen dazu habt, kann ich gerne versuchen da etwas beizusteuern.

Nur mal so als Info, nicht dass ihr glaubt ich hab eure Dienste nur ausgenutzt oder, ich weiß nicht genau worauf TimoBeil da genau raus wollte.

Vielen Dank und auf bald
Bitte warten ..
Mitglied: Skyemugen
22.06.2011 um 15:54 Uhr
Aloha,

ah der T-Mo hat einfach gesagt, die Nase dick, dass oftmals nur Leute kommen, ein Skript wollen und wieder gehen und er eigentlich der (durchaus berechtigten) Meinung ist, man sollte hier den Usern nur helfen und nicht deren Arbeit abnehmen .. allerdings ist das immer relativ *gg* ob man gerade Lust hat, ein ganzes Skript zu entwerfen oder nicht (zumindest geht mir das so). Der T-Mo fragt also erst einmal, wie die ganze Dimension aussieht (mache ich auch oft), um dann mit dem Satellitenüberblick einzelne Vorstöße zu geben *lach*. allerdings verstehen viele (vor allem Eintages-)Enduser den T-Mo nicht und halten seine konstruktiven Beiträge für Bitte das Wort deiner Wahl einfügen ... der arme

greetz André

P.S.: Hm, gut, wir wurden von einem anderen Board empfohlen - sehr schön ^_^
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Alle Dateien in einem Ordner umbenennen
gelöst Frage von l.scheperBatch & Shell5 Kommentare

Hallo liebe Helferlein, lese schon seit geraumer Zeit mit und hab schon viele Tipps erfolgreich genutzt, vielen Dank dafür. ...

Batch & Shell
Dateien in einem Ordner Suchen, Umbenennen und Entpacken.
gelöst Frage von NopiSoulBatch & Shell20 Kommentare

Hallo Leute, Ich möchte Archive in einem Ordner suchen, deren Namen nach einem Bestimmten Schema ändern, und dann Danach ...

Batch & Shell
Ordner nach darin liegenden Dateien umbenennen
gelöst Frage von Stefanie.LuehnsdorfBatch & Shell3 Kommentare

Hallo allerseits, ich stehe vor einem Problem, für das ich bisher trotz allen Suchens und Herumprobierens keine Lösung gefunden ...

Batch & Shell
Dateien Umbenennen
gelöst Frage von PLBot85Batch & Shell6 Kommentare

Hi, ich habe einen Ordner wo mehrer Dateien drin liegen. 20150316_121757_92636382965528_WMA1847GK62_TDOBB112.ddd 20150314_085730_73826383950256_WMA18263926_TDOBB236.ddd etc Die sollen jetzt mittels einer Batchdatei ...

Neue Wissensbeiträge
Microsoft

Update KB4073578 für AMD CPU (Spectre und Meltdown Lücke)

Information von sabines vor 5 StundenMicrosoft

Wegen Problemen (BOSD, nicht startende PCs) wurde das Update KB4056897 und KB4056894 für AMD CPUs zurückgezogen. Dieses Update KB4073578 ...

Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 18 StundenMac OS X3 Kommentare

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Datenschutz

Weitere Informationen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 1 TagDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 1 TagWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Heiß diskutierte Inhalte
Batch & Shell
Anmeldevorgang für Informatikraum (Schule) unter Windows
gelöst Frage von IngenieursBatch & Shell25 Kommentare

Hey zusammen, ich werde in naher Zukunft den Informatik Raum meiner jetzigen Schule von dem aktuellen Betreiber übernehmen (Vertrag ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1019 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
Frage von Windows10GegnerNetzwerkgrundlagen18 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...