CMD/BAT - удалить из директории все папки, кроме папок указанных

Аватара пользователя
DUNAEV78

CMD/BAT - удалить из директории все папки, кроме папок указанных

Сообщение DUNAEV78 »

Ребята Здравствуйте! помогите чайнику с таким вопросом, требуется удалить батником из директории где он и лежит, все папки независимо от того пустая она или нет, кроме папок с именем "оплата" и "реклама", буду признателен, заранее спасибо!
Аватара пользователя
DUNAEV78

Re: CMD/BAT - удалить из директории все папки, кроме папок указанных

Сообщение DUNAEV78 »

alpap, а если chcp 1251, да ну в прочем, работает, только удаляются все папки, а мне требуется удалять все папки кроме /c:"ОПЛАТА" /c:"РЕКЛАМА", простите если неправильно поясняю, "чайник" одним словом.
Аватара пользователя
DUNAEV78

Re: CMD/BAT - удалить из директории все папки, кроме папок указанных

Сообщение DUNAEV78 »

DJ Mogarych, спасибо за отклик, НО у меня такой вопрос по путям, D:\temp\123 - у меня папка меняется каждый раз имя где лежит сам батник, наверное я думаю что будет удобнее указать относительный путь, а как это сделать? или может вообще не указывать?
Аватара пользователя
DJ Mogarych

Re: CMD/BAT - удалить из директории все папки, кроме папок указанных

Сообщение DJ Mogarych »

Цитата DUNAEV78:



у меня папка меняется каждый раз имя где лежит сам батник
CMD/BAT - удалить из директории все папки, кроме папок указанных




ничего не понял



D:\temp\123 - это путь, где лежат папки оплата и реклама
Аватара пользователя
DJ Mogarych

Re: CMD/BAT - удалить из директории все папки, кроме папок указанных

Сообщение DJ Mogarych »

DJ Mogarych, Имя папки где находится сам батник, и лежат эти папки "оплата" и "реклама", меняется постоянно имя, вот поэтому я и обратил внимание по поводу относительных путей!
Аватара пользователя
DUNAEV78

Re: CMD/BAT - удалить из директории все папки, кроме папок указанных

Сообщение DUNAEV78 »

DJ Mogarych, Имя папки где находится сам батник, и лежат эти папки "оплата" и "реклама", меняется постоянно имя, вот поэтому я и обратил внимание по поводу относительных путей!
Аватара пользователя
megaloman

Re: CMD/BAT - удалить из директории все папки, кроме папок указанных

Сообщение megaloman »

Код:

Код: Выделить всё

@Echo Off
cls
rem	Set "BoxIn=Z:\Box_In"
	Set "BoxIn=%~DP0"
	Set Ex="оплата" "реклама"
Echo %Ex% &Pause
	Pushd "%BoxIn%" &&FOR /F "usebackq delims=" %%d IN (`2^>nul Dir /B /A:D`) DO Call :SomeDel "%%d" %Ex% 
	Popd
Pause
Exit /B 0
:SomeDel
	If "%~2"=="" (Echo Rd /S /Q %1 &Exit /B 0)
	If /I "%~2"=="%~1" Exit /B 1
	Shift /2
GoTo :SomeDel

Скрипт сохранить в 866 кодировке. Echo %Ex% &Pause отладочная строка, чтобы Вы могли убедиться, что скрипт сохранён в нужной кодировке: имена папок-исключений должны читаться.

Echo перед RD в боевом варианте надо убрать.

Сейчас подпапки будут удаляться в папке со скриптом

В принципе, можно указать иной другой путь

Set "BoxIn=Z:\Box_In" а Set "BoxIn=%~DP0" при этом необходимо удалить
Аватара пользователя
DUNAEV78

Re: CMD/BAT - удалить из директории все папки, кроме папок указанных

Сообщение DUNAEV78 »

Цитата DUNAEV78:



подкупает строка
CMD/BAT - удалить из директории все папки, кроме папок указанных





Цитата DUNAEV78:



коротко и скромно
CMD/BAT - удалить из директории все папки, кроме папок указанных




тоже надо в одну строку?



Код:

Код: Выделить всё

@echo off
for /f "delims= eol=" %%a in ('dir /a/b^|findstr /iv /c:"оплата" /c:"реклама" /c:"%~nx0"') do >nul 2>&1 del /q "%%a"& >nul 2>&1 rd /s /q "%%a"
pause

если только папки надо удалять, то ...dir /ad/b...

и убрать в конце ...>nul 2>&1 del /q "%%a"&
Аватара пользователя
alpap

Re: CMD/BAT - удалить из директории все папки, кроме папок указанных

Сообщение alpap »

HTML код:

Код: Выделить всё

for /f "delims= eol=" %%a in (^|findstr /iv /c:"оплата" /c:"реклама"') do >nul 2>&1 rd /s /q "%%a"



странно удаляет все папки , даже те которые не надо
Аватара пользователя
DUNAEV78

Re: CMD/BAT - удалить из директории все папки, кроме папок указанных

Сообщение DUNAEV78 »

HTML код:

Код: Выделить всё

for /f "delims= eol=" %%a in (^|findstr /iv /c:"оплата" /c:"реклама"') do >nul 2>&1 rd /s /q "%%a"



странно удаляет все папки , даже те которые не надо
Ответить

Вернуться в «Скриптовые языки администрирования Windows»