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.