peppercaster
Goto Top

aufräum-batch

ordner umbennen, lästige dateien löschen

mein erster beitrag hier face-smile

ich möchte gern eine art aufräum-batch programmieren

es sollte folgenden ablauf haben:
-in dem verzeichnis der batch-datei ->
alle umliegenden ordner überprüfen ob im namen eine gewisse zeichenfolge auftaucht:
syntax = "www.einepa.ge...<*>.muell<*>.quark" (wo <*> steht, ist wichtiges was nicht gelöscht werden soll)
es soll dann der jeweilige ordner so umbenannt werden dass "www.einepa.ge...", ".muell" und ".quark" aus dem namen verschwinden

-im verzeichnis der batch-datei, als auch in allen unterverzeichnissen->
alle "<*>.url"-dateien löschen


ich würde mich freuen wenn man mir erzählt wie man sowas bewerkstelligen kann face-smile

Content-Key: 68733

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

Ausgedruckt am: 28.03.2024 um 16:03 Uhr

Mitglied: Biber
Biber 15.09.2007 um 16:58:50 Uhr
Goto Top
Moin PepperCaster,

willkommen im Forum.

So ganz klar ist mir der Namensaufbau der umzubenennenden Unterordner noch nicht geworden.
Kannst Du mal bitte ein "dir /b /a:-d" in so einem Verzeichnis ausführen und ein halbes Dutzend Beispielzeilen posten?

Danke
Biber
Mitglied: bastla
bastla 15.09.2007 um 17:51:20 Uhr
Goto Top
@Biber
Ich hätte es etwa so verstanden:
@echo off & setlocal
for /f "delims=" %%i in ('dir /b /ad') do call :ProcessFolder "%%i"  
goto :eof
:ProcessFolder
set "VName=%~1"  
set "VName=%VName:www.einepa.ge...=%"  
set "VName=%VName:.muell=%"  
set "VName=%VName:.quark=%"  
echo ren %1 "%VName%"  
wobei es (... alle umliegenden ordner ...) auch "dir .. /b /ad" heißen könnte ...

@PepperCaster
Im Beispielbatch oben steht vor dem entscheidenden "ren" ein "echo", damit Du Dir zuerst ansehen kannst, wie die Umbenennung erfolgen würde. Falls es so ok ist, einfach das "echo" entfernen.

Zum Löschen aller .url-Dateien:
del *.url /s /q >nul

Grüße
bastla
Mitglied: PepperCaster
PepperCaster 15.09.2007 um 19:26:24 Uhr
Goto Top
unglaublich =)
es funktioniert genauso wie gehofft

vielen dank für diese wirklich tolle hilfe, jetz muss mir nurnoch die infos zusammensuchen... warum das so funktioniert wie es funktioniert ^^


noch eine frage:
ich würde gern genau dieses Ordner-umbenennungs-Verfahren dafür benutzen
um jede beliebige Datei (beliebige Endung) im Verzeichnis der Batch-Datei
als auch in allen Unterverzeichnissen
von nervigen Bestandteilen in dem jeweiligen Dateinamen befreien

was muss ich dafür an dem Script oben verändern ?


MfG, der staunende Alex
Mitglied: Biber
Biber 15.09.2007 um 20:28:47 Uhr
Goto Top
Moin PepperCaster,

wenn Du diese Minik öfters brauchst, dann solltest Du die beiden Strings, die bastla als Konstanten eingebaut hat (".muell" und ".quark" ) als Parameter übergeben. Para1: ".muell" Para2: ".quark"
Es sei denn, ".muell" und ".quark" sind wirklich konstant.

Aber erstmal die Änderung ausgehend von bastlas Lösung:
::----snipp ReduxFileNames.bat 
@echo off & setlocal
for /f "delims=" %%i in ('dir /b /a-D /s "*.muell*.quark" ') do call :ProcessFile "%%~fi"  
goto :eof
:ProcessFile
set "VName=%~nx1"  
set "VName=%VName:www.einepa.ge...=%"  
set "VName=%VName:.muell=%"  
set "VName=%VName:.quark=%"  
echo ren "%~dp1\%~nx1" "%VName%"  

Grüße
Biber
Mitglied: bastla
bastla 15.09.2007 um 21:18:32 Uhr
Goto Top
@Biber

Beim "dir" sollte es eher "/a:d" heißen ...

Grüße
bastla
Mitglied: Biber
Biber 15.09.2007 um 21:38:14 Uhr
Goto Top
@bastla
Beim "dir" sollte es eher "/a:d" heißen ...
Wieso? In meiner Variante wollte ich nur die Nicht-DIRs umbenennen.

Gleichzeitig (Verzeichnisse UND Dateien) wird es nicht gehen, da sonst u.U. Dateien in bereits umbenannten Verzeichnissen umbenannt werden sollen.

Ansonsten ist die Schreibweise "Dir /a-d" und "Dir /a:-d" IMHO gleichwertig.

Grüße
Biber
Mitglied: bastla
bastla 15.09.2007 um 21:55:25 Uhr
Goto Top
@Biber

Sorry, hast natürlich Recht. Ich war anscheinend beim "Ordner-umbenennungs-Verfahren" hängengeblieben und hatte den Themenwechsel auf Dateien nicht mitvollzogen ...
Andere Frage: Spricht etwas dagegen, für die letzte Zeile
echo ren %1 "%VName%"  
zu schreiben?

Grüße
bastla
Mitglied: Biber
Biber 15.09.2007 um 22:05:43 Uhr
Goto Top
Moin bastla,

Andere Frage: Spricht etwas dagegen, für die letzte Zeile
echo ren %1 "%VName%"
zu schreiben?
eigentlich nicht... außer, dass ich das %1 in Anführungszeichen setzen würde.
Falls es mal in "Y:\Eigene Dateien" zum Einsatz kommt oder auf dem Desktop.

Ansonsten hast Du Recht:
Streiche:
echo ren "%~dp1\%~nx1" "%VName%"

Setze:
echo ren "%~1" "%VName%"

Grüße
Biber
Mitglied: bastla
bastla 15.09.2007 um 22:10:54 Uhr
Goto Top
@Biber

Ich hätte gedacht, da Du ja beim "call" die Anführungszeichen gesetzt hast, würde das schon genügen ...

Grüße
bastla
Mitglied: Biber
Biber 15.09.2007 um 22:36:20 Uhr
Goto Top
Stimmt, bastla,

ich sollte auch mal wieder versuchen, etwas kompaktere Schnipsel zu schreiben...

Schönen Abend
Biber