Dateien in Unterordnern ändern
Hallo Ihr,
ich bin neu hier und ein Newbie was Batch und Shell angeht, deshalb sorry falls ich doofe Frage(n) stelle. Hoffe ihr könnt mir ein paar Tipps geben.
Hallo,
also mein Problem ist folgendes:
ich habe einen Oberordner A darin liegen wiederum versch. Unterordner in denen wieder versch. Dateien liegen. Die Batchdatei liegt im Oberordner.
Nun habe ich unter anderem das Problem dass durch ein vorangegangener Befehl meine Dateien in diesem Format:
diesisteinedatei.yyy.xxx
ausgegeben werden.
Ich möchte aber die Datei so:
diesisteinedatei.xxx
haben.
Nun habe ich ich schon folgende Batch-Scripte ausprbiert aber keins hat geholfen.
Direkt über die Shell hat dieser Befehl gefunzt (wenn ich im Unterordner war):
Für das springen in die Unterordner nutze ich - das funktioniert hier aber mit diesem ren-Befehl nicht. Hier im Forum habe ich noch den Ausdruck
dir /b /a-d "%%i"
gefunden.
Aber dieser hilft nicht (tut sich gar nichts):
Nutze ich
direkt in der Shell, dann sagt mir die Shell: "das System kann die angegebene Datei nicht finden". Sucht also im Oberordner nach xxx-Datein, aber da dort keine sind können ja auch keine gefunden werden
Ich seh bestimmt den Wald vor lauter Bäumen nicht..
Kann mir wer evtl. einen Tipp geben? Das wäre echt toll!
ich bin neu hier und ein Newbie was Batch und Shell angeht, deshalb sorry falls ich doofe Frage(n) stelle. Hoffe ihr könnt mir ein paar Tipps geben.
Hallo,
also mein Problem ist folgendes:
ich habe einen Oberordner A darin liegen wiederum versch. Unterordner in denen wieder versch. Dateien liegen. Die Batchdatei liegt im Oberordner.
Nun habe ich unter anderem das Problem dass durch ein vorangegangener Befehl meine Dateien in diesem Format:
diesisteinedatei.yyy.xxx
ausgegeben werden.
Ich möchte aber die Datei so:
diesisteinedatei.xxx
haben.
Nun habe ich ich schon folgende Batch-Scripte ausprbiert aber keins hat geholfen.
Direkt über die Shell hat dieser Befehl gefunzt (wenn ich im Unterordner war):
for %f in (*.xxx) do @for /f "delims=.yyy" %n in ('echo %f') do ren %f %n.xxx
Für das springen in die Unterordner nutze ich
for /r %cd% %i in (*) do ....
dir /b /a-d "%%i"
gefunden.
Aber dieser hilft nicht (tut sich gar nichts):
for /d %f in (*.xxx) do @for /f "delims=.yyy" %n in ('dir /b "%f"') do echo ren %f %n.xxx
Nutze ich
for /r %cd% %f in (*.xxx) do @for /f "delims=.yyy" %n in ('echo %~nf') do ren %~nf %n.xxx
Ich seh bestimmt den Wald vor lauter Bäumen nicht..
Kann mir wer evtl. einen Tipp geben? Das wäre echt toll!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 162257
Url: https://administrator.de/forum/dateien-in-unterordnern-aendern-162257.html
Ausgedruckt am: 22.04.2025 um 19:04 Uhr
8 Kommentare
Neuester Kommentar
moin sowahr,
da wäre der CMD-Liner (wenn sonst keine punkte im Dateinamen/Ordnernamen sind) etwa so:
das @echo zeigt Dir an was es tun würde. Wenn das @echo entfernt wird, tut es nur.
[Edit] fehlendes Hochkomma nachgezogen [/Edit]
Gruß Phil
da wäre der CMD-Liner (wenn sonst keine punkte im Dateinamen/Ordnernamen sind) etwa so:
for /f "tokens=1-3 delims=." %i in ('dir /s /b "*.xxx"') do @echo ren "%i.%j.%k" "%~ni.%k"
das @echo zeigt Dir an was es tun würde. Wenn das @echo entfernt wird, tut es nur.
[Edit] fehlendes Hochkomma nachgezogen [/Edit]
Gruß Phil
Moin sowahr,
eigentlich hast du nichts vergessen... sehen deine Dateinamenskonventionen wirklich so aus wie beschrieben?
pieh-ejdschens (von dir korrigierte) Zeile macht jedenfalls, was sie soll:
Demo/POC am CMD-Prompt:
Grüße
Biber
eigentlich hast du nichts vergessen... sehen deine Dateinamenskonventionen wirklich so aus wie beschrieben?
pieh-ejdschens (von dir korrigierte) Zeile macht jedenfalls, was sie soll:
Demo/POC am CMD-Prompt:
(=18:37:10 D:\temp=)
>echo x>testdatei.xxx.yyy
(=18:37:36 D:\temp=)
>echo x>testdatei.yyy.yyy
(=18:38:04 D:\temp=)
>for /f "tokens=1-3 delims=." %i in ('dir /s /b "*.yyy"') do @echo ren "%i.%j.%k" "%~ni.%k"
ren "D:\temp\testdatei.xxx.yyy" "testdatei.yyy"
ren "D:\temp\testdatei.yyy.yyy" "testdatei.yyy"
Grüße
Biber
moin,
1. was bring Dir der dir als Ausgabe
Zur Umsetzung gibts der Möglichkeiten viele (eine kleine Auswahl):
[Edit]
bei Verwenden des PushD auch das passende Gegenstück popD am Ende der Batch benutzen
[\Edit]
Gruß Phil
1. was bring Dir der dir als Ausgabe
dir /s /b "*.xxx"
bzw. dieser Befehl ...
dir /s /b "*.xxx*"
Direkt über die Shell hat dieser Befehl gegeht (wenn ich im Unterordner war): ...
2. bist Du denn mit der Batch auch schon in dem Unterordner?Zur Umsetzung gibts der Möglichkeiten viele (eine kleine Auswahl):
- Die Batch in das gewünschte Verzeichnis legen und starten
- In der Batch: Vor der For-Schleife in das gewünschte Verzeichnis wechseln
pushD "D:\my folder with dubble extensions"
- In der Batch: In der For Anweisung dem Befehl "dir" das Verzeichnis mitgeben (was aber nur mit /Subfolder Funktioniert)
for /f "tokens=1-3 delims=." %%i in ('dir /s /b "D:\my folder with dubble extensions\*.xxx"') do @echo ren "%%i.%%j.%%k" "%%~ni.%%k"
- Zum drag and drop des Ordners auf die Batch - In der Batch: Vor der Forschleife den Ordner an PushD übergeben
if exist "%~1\" (pushd "%~1") else goto :eof
[Edit]
bei Verwenden des PushD auch das passende Gegenstück popD am Ende der Batch benutzen
[\Edit]
Gruß Phil