Acerca del pequeño script de limpieza de CMD

Acerca del pequeño script de limpieza de CMD

Tengo una secuencia de comandos de línea de comandos que elimina todos los nombres de carpetas que no figuran en un archivo de texto. Lo que me gustaría es que el script elimine SÓLO las carpetas del archivo de texto. No estoy seguro de qué está mal.
Mi cmd es:

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

y mi archivo de texto incluye nombres de carpetas cortos como:

am
ar
bg

¿Alguien puede ayudar?

Respuesta1

En línea de comando:

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")

En lote:

@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!" 
)

Recuerde cambiar su directorio en la línea de comandos si no desea agregar nada más a sus opciones de bucle. Prefiero usar lotes y variables, así que lo he incluido.

información relacionada