godofwar
Goto Top

Per Batch in alle unterordner und Umbenennen

Hallo Leute

Ich habe ein Kleines Batch file gemacht das so ausschaut
@echo off
d:
rem *.txt *.doc
echo on

Nun möchte ich aber das es in alle unterordner geht und dieses dort auch macht.
Ist dies möglich? Auch ohne jeden unterordner von hand zu definieren?

@echo off
d:
rem *.txt *.doc
cd Temp
rem *.txt *.doc
echo on

Dieses ist ab 241 Ordner relativ aufwändig face-smile Wenn ihr eine Methode kennt die das erleichtert wäre ich euch sehr dankbar

Content-ID: 81336

Url: https://administrator.de/contentid/81336

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

Biber
Biber 21.02.2008 um 18:51:05 Uhr
Goto Top
Moin GODOFWAR,

grundsätzlich wäre für eine rekursive Abarbeitung (alle Ordner incl. Unterordner) eine FOR /R-Anweisung zu empfehlen.

Test für deinen Fall am CMD-Prompt:
>for /r D:\temp %i in (*.txt) do @echo "%i"  

das sollte Dir alle *.txt-Dateien unterhalb d:\temp auflisten.

Du kannst/könntest natürlich statt des [@echo "%i"] dann auch ein ["Ren "%i" "%~nxi"] abfeuern.

Aber bitte beachten:
Ein Umbenennen jeder *.txt (=Plain-Textdatei) in eine *.doc-Datei (=Word, formatierter Text) ist nicht so pauschal zu empfehlen.


Diesen Teil des Plans solltest Du nochmal kurz hier diskutieren.

Zu deinem Schnipsel:
  • "REM" bedeutet im Batch Remark, Kommentar. Alles, was dahintersteht wird ignoriert.
  • "REN" bedeutet Rename, Umbenamsen.

Grüße
Biber
paulepank
paulepank 21.02.2008 um 19:43:56 Uhr
Goto Top
Hallo Biber,


Du kannst/könntest natürlich statt des [@echo "%i"] dann auch ein ["Ren "%i" "%~nxi"] abfeuern.

Dann würde ja alles beim alten bleiben. Das sollte dann doch ["Ren "%i" "%~ni.doc"] heißen.

cu paulepank
Biber
Biber 21.02.2008 um 19:57:01 Uhr
Goto Top
Jepp, paulepank,

war wohl eine Freud'sche Fehlleistung von mir, weil ich dieses txt-in-doc-Umbenennen im Inneren ablehne.... face-wink

Grüße und Danke
Biber
Padmak
Padmak 22.02.2008 um 17:01:17 Uhr
Goto Top
Hi, tschuldigung dass ich hier einfach so reinplatze aber ich hätte da ne Frage:

Kann mir jemand helfen, ich will eine Batch schreiben, die mir z.B. aus meinen Eigenen Dateien alle *.doc Dateien rausfiltert und in den Ordner "Worddokumente" verschiebt.

Kann mir da Jemand helfen?

Ich bin nämlich viel zu faul um meine 55 ordner von Hand zu durchsuchen.
Und selbst bin ich im Batchen noch nicht so bewandert, dass das funktioniert

Danke
Padmak
Biber
Biber 22.02.2008 um 18:13:09 Uhr
Goto Top
Moin Padmak,

bitte das nächstemal einen eigenen Beitrag aufmachen.

Test am CMD-Prompt
for %i in ("%userdata%\*.doc") do @echo Move /y "%i" x:\Worddokumente\  

Wenn es sinnvoll aussieht, dann ohne das "@echo" ausführen.

Grüße
Biber
Padmak
Padmak 22.02.2008 um 22:42:15 Uhr
Goto Top
Sorry aber ich bin neu hier beim nächsten mal mach ichs.

Ähhm ich glaub ich bin da zu blöd das haut bei mir nicht hin.

Bis jetzt siehts so aus:

@echo off
md "C:\Dokumente und Einstellungen\Padmak\Worddokumente"
set eig=C:\Dokumente und Einstellungen\Padmak\Eigene Dateien
for %%i in ("%eig%*.doc") do move /y "%%i" "%eig%"

kannst du mir da helfen?
Wäre echt nett
Danke Padmak
bastla
bastla 23.02.2008 um 23:36:45 Uhr
Goto Top
Hallo Padmak!

Da Du ja "55 Ordner" erwähnt hast, eher so:
@echo off & setlocal
set "Typ=doc"  
set "Ziel=%userprofile%\Worddokumente"  
set "Quelle=%userprofile%\Eigene Dateien"  

md "%Ziel%" 2>nul  
for /f "delims=" %%i in ('dir /s /b /a-d "%Quelle%\*.%Typ%" 2^>nul') do echo move /-y "%%i" "%Ziel%\"  
Das "echo" bewirkt, dass die Verschiebebefehle voerst nur (zur Kontrolle) angezeigt werden - erst, wenn Du es entfernst, wird tatsächlich verschoben.

Das "/-y" nach "move" soll dafür sorgen, dass bereits vorhandene gleichnamige Dateien nicht ohne Rückfrage überschrieben werden (was beim Verschieben/Kopieren in einen "Sammelordner" eigentlich immer zu berücksichtigen ist).

Grüße
bastla
Padmak
Padmak 24.02.2008 um 21:30:02 Uhr
Goto Top
DANKEDANKEDANKE
ES FUNKTIONIERT

Danke schön ohne dich hätte das nie hingehauen *lieb*

Echt saunett, nicht in vielen Foren bekommen noobs hilfe
Danke
Padmak