Batchdatei, die Ordner aus "Eigene Dateien" löscht, mit Ausnahme derjenigen in einem Array

970
John

Ich habe absolut keine Lust auf zufällige Junk-Ordner (CyberPower, VirtualBox usw.), die in den Ordner "Eigene Dateien" in Windows gespeichert werden. Ich verwende zur Klarstellung Windows 7. Nein, es ist nicht die "Benutzerdatei", sondern "Eigene Dateien". Ich werde die Xbox 3 auch nicht als falsche Nummer bezeichnen. Nachdem wir nun klargestellt haben, dass ich einen Weg finden möchte, ein kleines Stapelverarbeitungsprogramm zu erstellen, das unbekannte Junk-Ordner dezimiert, und dann werde ich es an einer Stelle ablegen, an der ich aktiv zulasse, dass Programme beim Start ausgeführt werden: der Startordner im Ordner "Alle Benutzer".

Wenn Arrays (oder generell) nicht über einen Stapel ausgeführt werden können, was wäre eine gute plattformneutrale Sprache, um dieses Problem anzugehen?

0
Vbs und Powershell werden kein Problem haben, was dies jemals für das Scripting bedeutet. Batch, Sie müssten eine Menge Arbeit, um es zu tun. Ein paar schnelle Dinge zum Hinzufügen, muss es rekursiv sein? Muss die Liste der Ordner, die beibehalten werden sollen, geändert werden? 50-3 vor 10 Jahren 1
Es muss nur funktionieren und vorzugsweise über ein leicht zu pflegendes Array für andere Personen verfügen, um anzupassen, welche Ordner auf die Positivliste gesetzt werden sollen. Etwas statisches zu schreiben und nicht einfach zu aktualisieren, lohnt sich nicht für andere, die nach uns dasselbe tun wollen bin fertig und habe es vergessen. Und ja, mit Änderung meine ich, dass wir die Datei bearbeiten und leicht einen Ordner auf die Whitelist setzen. Mit Löschen meine ich, dass ich in den Papierkorb gehe. VBS scheint praktikabler als Batch zu sein, obwohl ich damit nicht sehr vertraut bin. John vor 10 Jahren 0
Sie können Vbs verwenden, um eine TXT-Datei zu öffnen und zu lesen und ein Array mit der Split-Funktion zu erstellen. Dann ist es nur eine if-Anweisung, die auf der Ausgabe einer Ordnerauflistung aus dem Speicherort meiner Dokumente basiert 50-3 vor 10 Jahren 1
Mögliches Duplikat von [So löschen Sie Dateien aus einem Ordner mithilfe einer Liste mit Dateinamen in Windows?] (http://superuser.com/questions/355584/how-to-delete-files-from-a-folder-using- eine Liste von Dateinamen in Windows) Ƭᴇcʜιᴇ007 vor 10 Jahren 0

1 Antwort auf die Frage

2
Marcks Thomas

Zunächst eine Vorsicht. Eine unvollständige Whitelist kann zum Löschen wichtiger Dateien führen. Außerdem werden diese "Junk-Ordner" häufig für den korrekten Betrieb der Software benötigt, mit der sie erstellt wurden. Wenn Sie sich immer noch für diese Lösung entscheiden, ist hier ein Einzeiler mit Zeilenumbrüchen zur besseren Lesbarkeit:

pushd C:\Users\John\Documents &&  for /D %i in (*) do @( echo %i| findstr /V /I /R /C:"^Important$" /C:"^Keep me$" > NUL && echo rmdir /S /Q %i ) & popd 

In ihrer jetzigen Form ist diese Aussage nicht schädlich. Das zweite Echo wird angezeigt, anstatt den Befehl 'rmdir' auszuführen, und ist als Vorsichtsmaßnahme enthalten. Prüfen Sie, ob das Skript wie beabsichtigt funktioniert, und entfernen Sie dann das zweite Vorkommen von 'Echo'.

Eine kurze Erklärung. pushdwechselt das Verzeichnis vorübergehend in den Dokumentenordner. for /Dlistet alle Verzeichnisse dort auf. findstrStimmt für jedes Verzeichnis mit der Whitelist überein. Die Schalter /V /I /Rdrucken nur nicht übereinstimmende Einträge, machen die Suche unabhängig von der Groß- und Kleinschreibung und aktivieren reguläre Ausdrücke. Jedes Verzeichnis, das aufbewahrt werden soll, wird dann als aufgeführt /C:"^dirname$". Verzeichnisse, die sich nicht auf der Whitelist befinden, machen den findstrRückgabefehlerlevel auf Null, wodurch der Befehl nach den doppelten kaufmännischen Und-Zeichen ausgeführt wird, dh rmdir /S /Q %idas leere Verzeichnis wird gelöscht, ohne nach einer Bestätigung zu fragen.

Wenn Sie von einer Batchdatei anstatt direkt von der Befehlszeile aus ausgeführt werden, ersetzen Sie jede %idurch %%i.