Über das kleine CMD-Bereinigungsskript

Über das kleine CMD-Bereinigungsskript

Ich habe ein Befehlszeilenskript, das alle Ordnernamen löscht, die nicht in einer Textdatei aufgeführt sind. Ich möchte, dass das Skript NUR die Ordner in der Textdatei löscht. Ich bin nicht sicher, was falsch ist.
Mein Befehl lautet:

for /d %%a in ("C:\Users\Administrator\Desktop\Somedir\*") do findstr /i /x /c:"%%~nxa" Cleanup.txt || rd /s /q %%a

und meine Textdatei enthält kurze Ordnernamen wie:

am
ar
bg

Kann jemand helfen?

Antwort1

In der Befehlszeile:

cd "C:\Where\Your\Text\File\Is"
for /f %A in ("Cleanup.txt") do (if exist "C:\Users\Administrator\Desktop\Somedir\%A" rd /s /q "C:\Users\Administrator\Desktop\Somedir\%A")

Im Batch:

@echo off

set "dir=C:\Users\Administrator\Desktop\Somedir"
set "txt=C:\Where\Your\File\Is\Located\Cleanup.txt"

setlocal enabledelayedexpansion
for /f %%A in (%txt%) do (
    set "del=%%A"
    if exist "%dir%\!del!" rd /s /q "%dir%\!del!" 
)

Denken Sie daran, Ihr Verzeichnis in der Befehlszeile zu ändern, wenn Sie Ihren Loop-Optionen nichts weiter hinzufügen möchten. Ich bevorzuge die Verwendung von Batches und Variablen, daher habe ich das eingeschlossen.

verwandte Informationen