Ich habe viele Varianten meiner Situation gesehen, kann aber keine finden, mit der ich zurechtkomme (sehr unerfahren). Grundsätzlich habe ich einen Ordner (E:\Downloads), zu dem Ordner hinzugefügt werden und der auch eine Batchdatei (Extractor.bat) enthält. Ich möchte einmal pro Woche alle Ordner und Dateien aus E:\Downloads löschen, aber NIEMALS Extractor.bat löschen. Vielen Dank für jede Hilfe dazu! (Der Teil mit dem wöchentlichen Vorgang ist im Skript nicht erforderlich, ich weiß, dass ich einfach eine Windows-Aufgabe festlegen kann, um die Bat-Datei an bestimmten Tagen auszuführen).
Windows 10
Antwort1
Sehen Sie die Set DEBUG=echo
Linie?
Deaktivieren Sie diese Zeile mit REM
oder , ::
wenn Sie sicher sind, dass sie das gewünschte Ergebnis liefert. Dieses Skript ist harmlos, solange es existiert, aber nicht, wenn Sie es entfernen.
Der if /i not "%DownloadsDir%" == "%CD%"
Spruch rührt daher, dass ich dumm war und alle meine Dateien in das falsche Verzeichnis gelöscht habe, als ich jünger und dümmer war.
cd /d
Sie können auch „in“ ändern pushd
und popd
unten ein einfügen, wenn Sie dies innerhalb von cmd.exe ausführen und dadurch Ihr aktueller Pfad durcheinandergerät.
@echo off
SetLocal
Set DEBUG=echo
Set DownloadsDir=E:\Downloads
cd /d %DownloadsDir%
if /i not "%DownloadsDir%" == "%CD%" echo Bad directory! && goto :EOF
for /F "delims=" %%d in ('dir /ad /b') do %DEBUG% rd /s /q "%%d"
for %%f in (*.*) do if /i not "%%f"=="Extractor.bat" %DEBUG% del /F /Q "%%f"
EndLocal