![О небольшом скрипте очистки CMD](https://rvso.com/image/1711444/%D0%9E%20%D0%BD%D0%B5%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%BE%D0%BC%20%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B5%20%D0%BE%D1%87%D0%B8%D1%81%D1%82%D0%BA%D0%B8%20CMD.png)
У меня есть скрипт командной строки, который удаляет все имена папок, не перечисленные в текстовом файле. Я бы хотел, чтобы скрипт удалял ТОЛЬКО папки в текстовом файле. Я не уверен, в чем проблема.
Мой cmd:
for /d %%a in ("C:\Users\Administrator\Desktop\Somedir\*") do findstr /i /x /c:"%%~nxa" Cleanup.txt || rd /s /q %%a
и мой текстовый файл содержит короткие имена папок, например:
am
ar
bg
Кто-нибудь может помочь?
решение1
В командной строке:
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")
В партии:
@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!"
)
Не забудьте сменить каталог в командной строке, если вы не хотите ничего добавлять в параметры цикла. Я предпочитаю использовать пакет и переменные, поэтому я включил это.