Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
Kommentar vom Moderator Biber am 03.05.2010 um 09:31:08 Uhr
Verschoben von "Tools & Utilities" nach "Batch & Shell".
GELÖST

Batch Datei ? Ordnernamen to Dateinamen

Frage Entwicklung Batch & Shell

Mitglied: bob777

bob777 (Level 1) - Jetzt verbinden

02.05.2010, aktualisiert 03.05.2010, 8003 Aufrufe, 17 Kommentare

Hallo

Auch ich platz bei mit einer Frage rein ;)

Suche schon lange vergeblich nach einem Weg Ordnernamen zu Dateien zu lenken.

In einem Ordner sind Unterordner und in diesen Ordnern sind Dateien.

Ordner -
| _unter.ordner1/datei.txt
| _unter.ordner2/datei.txt
| _unter.ordner3/datei.txt
| _unter.ordner4/datei.txt
| _unter.ordner5/datei.txt

jetzt würde es top sein wenn auf klick der batch datei die dateinamen zu ordnernamen werden, also /unter ordner1.txt, /unter ordner2.txt, /unter ordner3.txt, ...

und damit noch schwerer wird.. in den ordnernamen sind sonderzeichen drin wie "." und "_" und "-" und die sollen in den dateinamen zu einem leerzeichen werden.

Wenn das mit den sonderzeichen zu wild ist dann würde ich dankbar sein für die einfache variante

hoffe dass das einer versteht ;)

Danke und Gruss
Mitglied: AdmWomby
02.05.2010 um 06:48 Uhr
moin,
ich hoffe ich habe es halbwegs verstanden.
hier mal ein link für den ersten ansatz.

http://www.arstechnica.de/index.html?name=http://www.arstechnica.de/com ...

dort wird dr pfad als variable ausgegeben und danach kannst du doch die gefundene datei einfach umbenennen ( mit dem pfadnamen ). wenn es mehrere dateien seien sollten würde ich einen zähler hinten dran hängen.
1. pfad als variable
2. dateiname als variable
3.bei mehreren dateien eine zählschleife ( dateiname=dateiname&zähler )
4. rename

sollte eigentlich funktionieren, hab es aber noch icht getestet ( bitte erst testen mit testdaten keine echten )

gruß
Bitte warten ..
Mitglied: bastla
02.05.2010 um 09:08 Uhr
Hallo bob777 und willkommen im Forum!

Ein Grundgerüst für Dein Vorhaben könnte so aussehen:
01.
@echo off & setlocal 
02.
set "Basis=D:\Ordner mit vielen Unterordnern" 
03.
:: Name der umzubenennenden Datei 
04.
set "Datei=datei.txt" 
05.
 
06.
:: alle Unterordner des Basisordners durchgehen und im Unterprogramm ":ProcessFolder" behandeln 
07.
for /d %%i in ("%Basis%\*.*") do set "Dateiname=%%~nxi" & call :ProcessFolder "%%i" 
08.
:: hier ist das Ende des Batches 
09.
goto :eof 
10.
 
11.
:ProcessFolder 
12.
:: Gibt's in diesem Ordner (noch) die gesuchte Datei? Wenn nein war's das schon ... 
13.
if not exist "%~1\%Datei%" goto :eof 
14.
:: Ersetzung der "Sonderzeichen" im (neuen) Dateinamen 
15.
set "Dateiname=%Dateiname:.= %" 
16.
set "Dateiname=%Dateiname:_= %" 
17.
:: usw 
18.
:: jetzt kann umbenannt werden 
19.
ren "%~1\%Datei%" "%Dateiname% 
20.
:: und wieder in's Hauptprogramm zum nächsten Ordner 
21.
goto :eof
Nicht berücksichtigt ist derzeit die Möglichkeit, dass eine Datei mit dem neuen Namen im Ordner (zusätzlich zur "datei.txt") bereits existiert; was wäre in diesem Fall zu tun?

Grüße
bastla
Bitte warten ..
Mitglied: bob777
02.05.2010 um 20:52 Uhr
Servus will nicht so ganz ;)


hmm.. vll. hab ich es doch zu blöde beschrieben :D

habe eine Ordner (der inhalt wird immer anders sein )

da drin sind fussballspiele.

.......................
Bundesliga.2009-10.Matchday.28.Review.WS.PDTV.XviD-433 (Ordner)
Bundesliga.2009-10.Matchday.29.Review.WS.PDTV.XviD-433 (Ordner)
Bundesliga.2009-10.Matchday.30.Review.WS.PDTV.XviD-433 (Ordner)
.........
....
..


in jedem ordner ist die übertragungs.avi


...............
433-bl0910md28r.ws.pdtv.xvid.avi
433-bl0910md29r.ws.pdtv.xvid.avi
433-bl0910md30r.ws.pdtv.xvid.avi
.........
....
..


Jetzt sollen die auf klick die ordnernamen bekommen ohne die sonderzeichen "." "-" "_"

geht sowas ?
Bitte warten ..
Mitglied: bastla
02.05.2010 um 22:06 Uhr
Hallo bob777!

Wenn also der Dateiname nicht konstant ist, aber anscheinend der Typ (immer .avi ?) als Erkennungskriterium dienen kann, dann etwa so:
01.
@echo off & setlocal 
02.
set "Basis=D:\Ordner mit vielen Unterordnern" 
03.
:: Typ der umzubenennenden Datei 
04.
set "Typ=avi" 
05.
 
06.
:: alle Unterordner des Basisordners durchgehen und im Unterprogramm ":ProcessFolder" behandeln 
07.
for /d %%i in ("%Basis%\*.*") do set "Dateiname=%%~nxi" & call :ProcessFolder "%%i" 
08.
:: hier ist das Ende des Batches 
09.
goto :eof 
10.
 
11.
:ProcessFolder 
12.
:: Ersetzung der "Sonderzeichen" im (neuen) Dateinamen 
13.
set "Dateiname=%Dateiname:.= %" 
14.
set "Dateiname=%Dateiname:_= %" 
15.
:: usw 
16.
:: jetzt kann umbenannt werden 
17.
ren "%~1\*.%Typ%" "%Dateiname%" 
18.
:: und wieder in's Hauptprogramm zum nächsten Ordner 
19.
goto :eof
Das sollte unter der Voraussetzung funktionieren, dass es in jedem Ordner nur eine Datei des festgelegten Typs (lt Zeile 4) gibt.

Grüße
bastla
Bitte warten ..
Mitglied: bob777
13.05.2010 um 17:31 Uhr
SERVUS

Sorry habe neuen Job und keine Zeit gehabt um früher zu schieben.

habe die Datei getestet und es wurde alles umgeschrieben, wie geplant ;) aber ohne die endung am ende ...


habe aber rausbekommen wies geht. bei dateiname .AVI dazugeschrieben und passt alels wies soll

01.
:: usw 
02.
:: jetzt kann umbenannt werden 
03.
ren "%~1\*.%Typ%" "%Dateiname%.avi" 
04.
:: und wieder in's Hauptprogramm zum nächsten Ordner 
05.
goto :eof


Aber jetzt gehts weiter

möchte dass die dateinamen ohne einige werte sind.

Bundesliga.2009-10.Matchday.28.Review.WS.PDTV.XviD-433

soll werden >>

Bundesliga.10.Matchday.28.Review.avi

kann man also jetzt irgendwie ;) es anstellen dass bestimmte werde nicht übernommenwerden in den avinamen.. also OHNE DVD, 2009, WS, PDTV, .XviD ,433...

hier trag ich dann neue sachen dazu wenn gebraucht.

ich danke jetzt schon sehr aber wenn das möglich ist dann rockt das haus echt

gruss
Bitte warten ..
Mitglied: bastla
13.05.2010 um 17:42 Uhr
Hallo bob777!

Sorry wegen des Dateityps - die Ergänzung hättest Du auch so vornehmen (und damit ev etwas universeller machen) können:
ren "%~1\*.%Typ%" "%Dateiname%.*"
Zum Ausfiltern der genannten Bestandteile könntest Du Dich an den Zeilen 13 und 14 orientieren:
set "Dateiname=%Dateiname:.DVD=%" 
set "Dateiname=%Dateiname:2009-=%" 
set ...
Ersetzt wird also immer, was zwischen Doppelpunkt und Gleichheitszeichen steht durch das (hier einfach gar nix ), was zwischen Gleichheitszeichen und zweitem (=schließenden) Prozentzeichen steht.

Grüße
bastla
Bitte warten ..
Mitglied: bob777
13.05.2010 um 19:19 Uhr
das ist super ... GÖTTLICH

eigentlich ist das thema damit angeschlossen ;) hab jetzt am ende der dateinamen 3 -4 leerzeichen aber ich denk das stört nicht

aber ich hab noch eine sache würde gerne dass das entpacken der rar auch per batch passiert ..

das selbe verfahren

ein ordner mit den bundesliga übertragungs ordnern.

jetzt sind da splits und einer rar.. die sollen antpacket werden und zwar in ihren ordner bleiben wenns geht die rars und splits gelöscht werden geht sowas ? hab schon gesucht aber komm nicht so dahinter ;)
Bitte warten ..
Mitglied: Biber
13.05.2010 um 19:29 Uhr
Moin bob777,

Zitat von bob777:
eigentlich ist das thema damit angeschlossen ;)
Jepp, und uneigentlich auch. Haken dran und neuen Beitrag für eine neue Fragestellung.
So ist es hier Sitte und Regel.
Außerdem... sonst würden hier gewisse Moderatoren auch mit Bobs Schlitten fahren.

hab jetzt am ende der dateinamen 3 -4 leerzeichen aber ich denk das stört nicht
Na watt nu - funktioniert es jetzt oder funktioniert es fast? Sprechen Sie jetzt...

Bitte lass uns (spätestens nach Beseitigung des o.a. Fehlerchens) diese Frage abschliessen... du wirst auch in einem neuen Beitrag Antworten bekommen.

Grüße
Biber
Bitte warten ..
Mitglied: bob777
13.05.2010 um 19:39 Uhr
Hehe danke für diese milde Rüge ;)

eigentlich wollte ich einen neuen Beitrag aufmachen aber da hat der Bob nicht auf die innere Stimme gehört :D

Also ich sag es so es ist angeschlossen das Thema .. sollte ich Probleme haben mit den überflüssigen Leerzeichen am Ende der Filenamen so frag ich noch mal nach!

Jetzt sag cih noch mal DANKE und man sieht sich im anderem Beitrag
Bitte warten ..
Mitglied: bastla
13.05.2010 um 20:27 Uhr
Hallo bob777!

Die
überflüssigen Leerzeichen am Ende der Filenamen
sind wohl auf die Ersetzung der vorkommenden Punkte zurückzuführen - daher am besten die übrigen Ersetzungen vorweg (= vor der Zeile 13) erledigen und dabei auch - wie bei meiner Beispielzeile für ".DVD" - berücksichtigen, dass die nicht benötigten Punkte auch in den zu ersetzenden Text mit aufgenommen werden ...

Grüße
bastla
Bitte warten ..
Mitglied: bob777
17.05.2010 um 21:22 Uhr
Haj

eine sache ;) wenn CD1 und CD2 entpackt wird dann sind zwei avi dateien im einem ordner.

hier hickt das ganze script ;) und lässt immer eine datei.avi umbenannt! es würde cool sein wenn das script noch erkennt was a und b ist also cd1 und cd2 und das dann übernimmt oder per zähler listet.



01.
@echo off & setlocal 
02.
set "Basis=f:\xx2" 
03.
:: Typ der umzubenennenden Datei 
04.
set "Typ=avi" 
05.
 
06.
:: alle Unterordner des Basisordners durchgehen und im Unterprogramm ":ProcessFolder" behandeln 
07.
for /d %%i in ("%Basis%\*.*") do set "Dateiname=%%~nxi" & call :ProcessFolder "%%i" 
08.
:: hier ist das Ende des Batches 
09.
goto :eof 
10.
 
11.
:ProcessFolder 
12.
:: Ersetzung der "Sonderzeichen" im (neuen) Dateinamen 
13.
set "Dateiname=%Dateiname:.= %" 
14.
set "Dateiname=%Dateiname:_= %" 
15.
set "Dateiname=%Dateiname:DVD=%" 
16.
:: usw 
17.
:: jetzt kann umbenannt werden 
18.
ren "%~1\*.%Typ%" "%Dateiname%.*" 
19.
:: und wieder in's Hauptprogramm zum nächsten Ordner 
20.
goto :eof
Bitte warten ..
Mitglied: bastla
17.05.2010 um 21:31 Uhr
Hallo bob777!
wenn das script noch erkennt was a und b ist also cd1 und cd2 und das dann übernimmt oder per zähler listet.
Woran ist das zu erkennen? Kannst Du das an konkreten Beispielen der Dateinamen zeigen?

Grüße
bastla
Bitte warten ..
Mitglied: bob777
17.05.2010 um 21:47 Uhr
eigentlich nur an einem a oder einem b am ende der dateinamen.

liga2009faktorya.avi
liga2009faktoryb.avi

oder ab und zu so

liga2009faktory_a.avi
liga2009faktory_b.avi

ich wüsste nicht wie man es sonst richtig unterscheiden kann.
Bitte warten ..
Mitglied: bastla
22.05.2010 um 15:18 Uhr
Hallo bob777!

Als ungetester Ansatz:
01.
@echo off & setlocal 
02.
set "Basis=f:\xx2" 
03.
:: Typ der umzubenennenden Datei 
04.
set "Typ=avi" 
05.
 
06.
:: alle Unterordner des Basisordners durchgehen und im Unterprogramm ":ProcessFolder" behandeln 
07.
for /d %%i in ("%Basis%\*.*") do set "Dateiname=%%~nxi" & call :ProcessFolder "%%i" 
08.
:: hier ist das Ende des Batches 
09.
goto :eof 
10.
 
11.
:ProcessFolder 
12.
:: Ersetzung der "Sonderzeichen" im (neuen) Dateinamen 
13.
set "Dateiname=%Dateiname:.= %" 
14.
set "Dateiname=%Dateiname:_= %" 
15.
set "Dateiname=%Dateiname:DVD=%" 
16.
:: usw 
17.
:: jetzt kann umbenannt werden 
18.
 
19.
:: die erste (und ev einzige Datei) benötigt keinen Zusatz 
20.
set "Zusatz=" 
21.
for /f "delims=" %%i in ('dir /b /a-d /on "%~1\*.%Typ%") do call :RenameFile "%~1\%%i" 
22.
:: und wieder in's Hauptprogramm zum nächsten Ordner 
23.
goto :eof 
24.
 
25.
:RenameFile 
26.
:: wenn die Datei mit dem aktuellen Zusatzwert noch nicht vorhanden ist, kann umbenannt werden 
27.
if not exist "%~dp%1%Dateiname%Zusatz%%~x1" goto :DoIt 
28.
:: Zusatz (lfd Nr) hochzählen - bei der ersten Datei, die den Zusatz benötigt, ist dieser 2 
29.
if not defined Zusatz (set /a Zusatz=2) else (set /a Zusatz+=1) 
30.
goto :RenameFile 
31.
 
32.
:DoIt 
33.
:: Umbenennung durchführen ... 
34.
ren %1 "%Dateiname%Zusatz%%~x1" 
35.
:: ... und zurück zur nächsten Datei 
36.
goto :eof
Soferne es mehr als eine ".avi"-Datei im Ordner gibt, wird ab der zweiten Datei eine laufende Nummer (ist einfacher, als mit den Buchstaben zu hantieren) an den Namen angefügt - für Dein Beispiel oben sollte das Ergebnis dann so aussehen:
liga2009faktory.avi 
liga2009faktory2.avi
Grüße
bastla
Bitte warten ..
Mitglied: GismoCrack
15.04.2014 um 04:23 Uhr
Hallo,


habe nun dank diesen beitrages auch meine leicht abgeänderte form von der Batch.

danke erstmal für alle die helfen.

meine Batch sieht nun so aus:

@echo off & setlocal
set "Basis=D:\ordner1\ordner2\ordner3
:: Typ der umzubenennenden Datei
set "Typ=mkv"

:: alle Unterordner des Basisordners durchgehen und im Unterprogramm ":ProcessFolder" behandeln
for /d %%i in ("%Basis%\*.*") do set "Dateiname=%%~nxi" & call :ProcessFolder "%%i"
:: hier ist das Ende des Batches
goto :eof

:ProcessFolder
ren "%~1\*.%Typ%" "%Dateiname%.mkv"
:: und wieder in's Hauptprogramm zum nächsten Ordner
goto :eof

jetzt ist die datei zwar im ordner umbenannt aber wo bzw wie muss ich den move befehl einsetzen,wenn ich die datei aus den ordner in den hauptordner bekommen will?

also das so gesehen die datei aus ordner 3 in den ordner 2 wandert?

LG

Mirko
Bitte warten ..
Mitglied: bastla
15.04.2014 um 09:40 Uhr
Hallo GismoCrack!

Vorweg: Mit "Code"-Formatierung (lässt sich auch nachträglch einfügen) liest sich ein Batch leichter ...

Wenn Du gleichzeitig umbenennen und verschieben willst, bietet sich statt des "ren" ein "move" an (ungetestet):
move "%~1\*.%Typ%" "%~1\..\%Dateiname%.mkv"
Grüße
bastla
Bitte warten ..
Mitglied: GismoCrack
15.04.2014 um 11:19 Uhr
Zitat von bastla:

Hallo GismoCrack!

Vorweg: Mit "Code"-Formatierung (lässt sich auch nachträglch
einfügen) liest sich ein Batch leichter ...

Wenn Du gleichzeitig umbenennen und verschieben willst, bietet sich statt des "ren" ein "move" an
(ungetestet):
move "%~1\*.%Typ%" "%~1\..\%Dateiname%.mkv" 
> 
Grüße
bastla



klappt super,vielen lieben dank. *thumbsup*
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Ä in batch Datei (12)

Frage von BergEnte zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (19)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (19)

Frage von patz223 zum Thema Windows Userverwaltung ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (15)

Link von Penny.Cilin zum Thema Viren und Trojaner ...