Войти

Показать полную графическую версию : Удалить все папки и файлы кроме определенных 2 папок и 2 файлов


komilfo
17-01-2018, 23:10
Нужна помощь профессионалов !
Борюсь со скриптом bat

Надо удалить все папки и файлы кроме определенных 2 папок и 2 файлов
Вообщум у меня получилось вот так:

set folder="d:\UUUU\Mp3tag\lang"
set "papka=ru"
set "file=Russian.lng"

for /f "delims=" %%a in ('2^>nul dir/a/b "%folder%"^|find/v "%papka%"^|find/v "%file%"') do >nul 2>&1 del /s /q "%folder%\%%a"& >nul 2>&1 rd /s /q "%folder%\%%a"

В папке "Lang" - есть другие папки и файлы, после выполнения этого кода удаляет но не правильно.
Ошибки:
1. оставляет любую папку или файл в названии которого есть сочетание "ru"
а нужно чтоб осталась всего одна папка "ru" и один файл "Russian.lng"
2. не работает код если файл состоит из 2х слов т.е. с пробелами
также если папка тоже будет иметь 2а слова то тоже скрипт не работает.

Также пробовал решитьт проблему атрибутами
set folder="d:\UUUU\Mp3tag\lang"

attrib +H "%folder%\ru"
attrib +H "%folder%\en"
for /d %%i in ("%folder%\%~1*") do rd /q /s %%i
for /F %%i in ('dir /S /B /AD "%folder%\*"') do attrib -H /S /D %%i

Ошибки те же

Хотел спросить может кто знает как решить проблему? Прикрепил файл.

alpap
18-01-2018, 00:52
@echo off
set "d=UUUU\Mp3tag\lang"
set "d1=ru"
set "d2=en"
set "f1=Russian.lng"
set "f2=English.lng"

pushd "%d%"
for /f "delims=" %%a in ('2^>nul dir /b^|findstr /xv /c:"%d1%" /c:"%d2%" /c:"%f1%" /c:"%f2%"') do >nul 2>&1 rd /s /q "%%a"& >nul 2>&1 del /q "%%a"
popd
pause

komilfo
18-01-2018, 09:08
alpap,
Огромное спасибо!
Ваш код отлично работает и идеально справляется с поставленной задчей. Еще раз спасибо.

Тему можно закрывать.




© OSzone.net 2001-2012