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
GELÖST

Per Batch alles löschen, allerdings 2 Ordner ausschließen

Frage Entwicklung

Mitglied: Mike0185

Mike0185 (Level 1) - Jetzt verbinden

11.07.2011 um 11:55 Uhr, 7874 Aufrufe, 13 Kommentare

Hallo Zusammen,

für Euch sicher eine leichtigkeit... Ich brauche ein Batch, das in einem Ordner alle Dateien und Unterordner löscht, egal was hier reingespeichert wird und wie diese benannt sind. Das Skript soll aber 2 Unterordner die auch hier liegen ignorieren.

Hab Ihr ein Lösungsansatz für mich. Über die Sufu konnte ich nur Ansätze finden, die nach Datum oder alter von Dateien löschen.


Vielen Dank Euch!
Mitglied: Skyemugen
11.07.2011 um 12:14 Uhr
Aloha,

so ganz kristallklar ist mir das jetzt nicht, sind die beiden Verzeichnisse Unterordner des Stammverzeichnisses von dem du ausgehst, oder noch eine (oder mehrere Ebenen tiefer) sprich:

Angenommen wir gehen von wqeqw aus, ist der dann dort:
E:\SKRIPTE\NEUER ORDNER 
└───wqeqw 
    └───Neuer Ordner 
└───Neuer Ordner 
    └───grabbel
oder dort
E:\SKRIPTE\NEUER ORDNER 
└───Neuer Ordner 
    └───wqeqw 
└───Neuer Ordner 2 
    └───grabbel
? Denn das macht einen deutlichen Unterschied im Skript, das eine wäre easygoing, das andere wäre umständlicher, weil man nicht das übergeordnete Verzeichnis des gesuchten Verzeichnisses löschen darf.

greetz André
Bitte warten ..
Mitglied: Friemler
11.07.2011 um 12:19 Uhr
Hallo Mike0185,

ich mache hier mal einen Vorschlag für den Easy-Going-Fall :
01.
@echo off & setlocal 
02.
 
03.
set "SrcDir=E:\Test" 
04.
set "Exclude="Der erste" "Der zweite"" 
05.
 
06.
del /q "%SrcDir%\*.*" 2>NUL 
07.
 
08.
set "DoNotDelete=" 
09.
 
10.
for /f "delims=" %%d in ('dir /b /a:d "%SrcDir%"') do ( 
11.
  for %%e in (%Exclude%) do ( 
12.
    if "%%d" equ "%%~e" set "DoNotDelete=1" 
13.
14.
 
15.
  if not defined DoNotDelete rd /s /q "%SrcDir%\%%d" 
16.
  set "DoNotDelete=" 
17.
)
Die Variablen in Zeile 3 und 4 musst Du anpassen. Falls die auszunehmenden Verzeichnisse Leerzeichen im Namen enthalten, musst Du sie so wie im Beispiel in Zeile 4 in Anführungszeichen setzen.

Gruß
Friemler
Bitte warten ..
Mitglied: Skyemugen
11.07.2011 um 12:27 Uhr
Aloha Friemler,

also eines stört mich:

Du löschst keine Dateien im Ausgangsverzeichnis (ist doch gewollt oder nicht: Dateien und Unterordner)


greetz André
Bitte warten ..
Mitglied: Friemler
11.07.2011 um 12:29 Uhr
Hey André,

hmm (auf die Uhr schau'), bist Du schon wach?

Schau mal in Zeile 6....

Gruß
Friemler
Bitte warten ..
Mitglied: Skyemugen
11.07.2011 um 12:35 Uhr
Aloha Friemler,

hmm ... gab zu wenig zum Frühstück, Mittag ist erst in 30 Minuten ... heute ist Montag und es ist dauergrau, reicht das als Ausrede, Zeile 6 komplett ausgeblendet zu haben?

greetz André

edit: Aber mal die Frage: Warum arbeitest du nicht einfach mit findstr /v /e /c? Wäre meine Umsetzung gewesen
Bitte warten ..
Mitglied: Friemler
11.07.2011 um 12:41 Uhr
Hi André,

ist genehmigt .

Bei Euch ist es grau? Schade, hier in Rhein-Main lacht die Sonne .

Grüße
Friemler
Bitte warten ..
Mitglied: Friemler
11.07.2011 um 12:51 Uhr
Hi André,

Zitat von Skyemugen:
Warum arbeitest du nicht einfach mit findstr /v /e /c? Wäre meine Umsetzung gewesen

weil man beim Parameter /c: nur einen Suchbegriff angeben kann. Damit wäre dann auch wieder eine extra Schleife erforderlich, um auf alle Ausnahmen zu prüfen. Die Verzeichnisse ohne /c: angeben geht auch nicht, da die Verzeichnisnamen Leerzeichen enthalten könnten und somit die beiden Teile als zwei Namen aufgefasst würden.

Gruß
Friemler
Bitte warten ..
Mitglied: Mike0185
11.07.2011 um 12:53 Uhr
Hey!

Super vielen Dank schon mal!

Ist Easy-Going.... Hab ein Hauptverzeichnis z.B.: C:\Test unter diesem liegen 2 Ordner C:\Test\notdel1 und C:\Test\notdel2. notdel1 und notdel2 sollen ausgeschlossen werden. Sonstiger Inhalt in C:\Test\ muss gelöscht werden.

Bitte warten ..
Mitglied: Skyemugen
11.07.2011 um 12:57 Uhr
Aloha Friemler ...

aber ...
for /f "delims=" %%s in ('dir /b /s /ad "E:\Skripte\Neuer Ordner" ^|findstr /v /i /e /c:"Ordner 1" ^|findstr /v /i /e /c:"Ordner 2"') do rd "%%s"
oder nicht? ...

greetz André

P.S.: Wenn was ist, ich bin essen *fg*
Bitte warten ..
Mitglied: Mike0185
11.07.2011 um 12:58 Uhr
Das Skript funktioniert super!

Vielen Dank genau sowas habe ich gesucht! DANKE @Friemler
Bitte warten ..
Mitglied: Friemler
11.07.2011 um 13:04 Uhr
Hey André,

joa, aber nur um auf einen Oneliner zu kommen so einen Bandwurm? Und wenn der TO vielleicht mal 3 oder 4 Verzeichnisse ausschließen will, ist jedesmal ein neuer FINDSTR-Abschnitt erforderlich - der Bandwurm wird länger. Ich denke, meine Lösung ist am einfachsten anpassbar.

Guten Appetit
Friemler
Bitte warten ..
Mitglied: Friemler
11.07.2011 um 13:05 Uhr
Hallo Mike,

gern geschehen. Aber markiere den Beitrag auch bitte noch als gelöst.

Gruß
Friemler
Bitte warten ..
Mitglied: Skyemugen
11.07.2011 um 15:22 Uhr
Aloha Friemler,

der Bandwurm kommt natürlich wieder nur, weil da zu viel Überflüssiges steht ... ^|findstr /v /i /e /c:"Ordner 1" /c:"Ordner 2" sollte es ja auch tun

Wobei /e ja auch wegfallen kann, der war noch drin, weil es von einem dir ohne /ad ausging ^_^ aber del weigert sich ja doch, Verzeichnisse zu löschen, har har

greetz André
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst älteste dateien via batch löschen (6)

Frage von cali169 zum Thema Batch & Shell ...

Batch & Shell
gelöst Per Batch Dateien in einen Ordner - ext. Festplatte übertragen (2)

Frage von tocksick zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (19)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...