CMD Dateien löschen in einem Ordner?

2 Antworten

Deans Batch dürfte leider nicht funktionieren. Es gibt gute Gründe weshalb profesionelle Administratoren den for/d-Loop meiden wie der Teufel das Weihwasser.

remove_autosave_Folders.cmd

@echo off
rem hier Pfad angeben unter dem "autosave"-Ordner gesucht werden sollen
set "StartPath=C:\users"

for /f "tokens=*" %%a in ('dir /ad /b /s "%StartPath%\autosave"') do (
 if exist "%%a" rd /s "%%a"
)
pause

Ich weiß nicht wie geübt Du in Sachen automatisierter System Verwaltung bist?

Ich bin sehr vorsichtig wenn es um "zerstörende" Befehle  auf  fremden Rechnern geht, deshalb   lasse ich den rd-Befehl  vor dem löschen eines Ordners fragen. (Der rd /s /q -Befehl macht keine Gefangen und zählt nach dem format-Befehl zu den gefährlichsten Befehlen. ..löscht auch Ordner die schreibgeschütze oder Systemdateien enthalten. Was gelöscht wurde ist auch nicht widerherstellbar! )

Sollten keinen Löschungen abgefragt werden, welche Du mit Nein beantworten musst, kannst Du du Zeile 6 zu:

if exist "%%a" rd /s /q "%%a"

...ändern.

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

Du willst in einem Verzeichnis alle Unterverzeichnisse mit einem bestimmten Namen löschen, korrekt? Dann sollte folgender Code funktionieren. Wenn das ganze automatisch gehen soll, ggf. einfach den Bereich :a weglassen. Den Verzeichnisnamen musst du natürlich ggf. noch ändern.

@echo off
cd D:\
:a
echo Alle Autosave-Ordner unter D: loeschen? [J/N]
set/p "cho=>"
if %cho%==J goto del
if %cho%==j goto del
if %cho%==N goto b
if %cho%==n goto b
echo Bitte Eingabe korrigieren.
goto a
:del
FOR /d /r . %%d IN ("autosave") DO @IF EXIST "%%d" rd /s /q "%%d"
>pause nul
:b
exit

LG

olischu1990 
Fragesteller
 15.11.2022, 15:14

Super Vielen Dank, ich werde es morgen direkt Mal testen.

0
Erzesel  15.11.2022, 18:07

Wo hast Du den das Monstrum abgeschrieben? Probiert ob's funktioniert hast Du es sicher nicht.

  • Dein cd-Befehl kann nicht in einen Pfad auf einem anderen Laufwerk wechseln! richtig wäre cd /d "lw:\Pfad"
  • if /i ignoriert Groß/Kleinschreibung
  • folgende hätte es auch getan :
choice
if %errorlevel% equ 2 exit /b
  • Dein for /d /r ... fügt an jeden Pfad an welchem er vorbei kommt ein "autosave" hinzu
"C:\Users\Erzesel Secure\Desktop\Projekte\Batch\alternate UserShell\"Autosave""
"C:\Users\Erzesel Secure\Desktop\Projekte\Batch\ANSI Sequenzen\"Autosave""

..nur gut das hat schlimmeres verhindert!

selbst mit der Richteigen syntax:

for /d /r . %%a in ("autosave?") do echo "%%a"

...würden auch Ordner einbezogen, welche man nicht unbedingt erwischen mochte ? ist ein Joker ... (for /d hat zudem ein paar unangenehme Bugs , das würde aber den Rahmen sprengen)

  • >pause nul was glaubst Du tut das? jedenfall ruft diese Zeile die Windowssicherheit auf den Plan! So: pause >nul

Das war bisher nur Pipifax!

Man schickt einem potenziell "Unbedarften" kein halbgares Scrip mit absolut vernichtenden Befehlen ... rd /s /q kommt im Blindflug gleich nach "Atombombe" und da dein CD am Anfang schon versagt wäre das Basisverzeichnis u.U. nicht das gewünschte!

Ich war selbst überrascht wieviele autosave-Ordner (außer meinem angepeilten Testordner) in meinem System existierten, welche ich garantiert nicht löschen wollte ergo unbekannter, fremder Rechner keinen stillen Modus /q weder bei rd noch bei del .

0
ruhrgur  15.11.2022, 18:19
@Erzesel
Dein cd-Befehl kann nicht in einen Pfad auf einem anderen Laufwerk wechseln! richtig wäre cd /d "lw:\Pfad"

Ich bin auch hier davon ausgegangen, dass die Batch-Datei auf dem selben Laufwerk läuft.

>pause nul was glaubst Du tut das? jedenfall ruft diese Zeile die Windowssicherheit auf den Plan! So: pause >nul

Nennt sich auf Tippfehler. Kein Grund hier gleich so aggressiv zu werden.

Dein for /d /r ... fügt an jeden Pfad an welchem er vorbei kommt ein "autosave" hinzu

Ich benutze kein Windows, von daher kann ich es auch nicht austesten StackOverflow schlägt mir aber genau das gleiche vor, wenn ich danach suche:

https://stackoverflow.com/a/53341473/19835587

Ich war selbst überrascht wieviele autosave-Ordner (außer meinem angepeilten Testordner) in meinem System existierten, welche ich garantiert nicht löschen wollte

Der FS hat gefragt, wie er alle Ordner mit dem Namen Autosave auf einer Festplatte löscht, nicht mehr und nicht weniger.

0
Erzesel  15.11.2022, 18:18

War wirklich nicht böse gemeint.😇

Du hast eine gute Reputation auf Deinem Gebiet. Es wäre doch blöd, wenn Du einem Fragesteller unwissentlich einen Schaden zufügst, nur weil 'Du Batch nicht so beherrscht wie es nötig wäre.🤔

0