Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удалить папки в папках

Ответить
Настройки темы
CMD/BAT - Удалить папки в папках

Пользователь


Сообщения: 83
Благодарности: 2


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: GIGABAIT
Дата: 18-10-2016
Помогите сделать скрипт для удаление папок. Нужно удалить папки Folder1 и Folder3 в папках со звездочкой.
Пример :

Folder1
{
Folder1*<<Folder1,Folder2,Folder3
Folder2*<<Folder1,Folder2,Folder3
Folder3*<<Folder1,Folder2,Folder3
Folder4*<<Folder1,Folder2,Folder3
Folder5*<<Folder1,Folder2,Folder3
}
"<<" значит что "Folder1,Folder2,Folder3" находятся в данной папке. "Куда смотрит клюв"

Отправлено: 14:41, 18-10-2016

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


GIGABAIT, плохой пример: в именах файлов и каталогов FATx и NTFS не поддерживается символ «*».

Отправлено: 15:16, 18-10-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 83
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Iska:
GIGABAIT, плохой пример: в именах файлов и каталогов FATx и NTFS не поддерживается символ «*». »
Это не важно.

Отправлено: 15:52, 18-10-2016 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


GIGABAIT, раз неважно — тогда возьмите в руки tree.exe и приведите нормальный пример.

Отправлено: 16:10, 18-10-2016 | #4


Пользователь


Сообщения: 83
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Iska:
GIGABAIT, раз неважно — тогда возьмите в руки tree.exe и приведите нормальный пример. »
Пример 2 :
Код: Выделить весь код
D:.
├───Папка1
│   ├───Папка1 Удалить
│   ├───Папка2
│   └───Папка3 Удалить
├───Папка2
│   ├───Папка1 Удалить
│   ├───Папка2
│   └───Папка3 Удалить
├───Папка3
│   ├───Папка1 Удалить
│   ├───Папка2
│   └───Папка3 Удалить
├───Папка4
│   ├───Папка1 Удалить
│   ├───Папка2
│   └───Папка3 Удалить
└───Папка5
    ├───Папка1 Удалить
    ├───Папка2
    └───Папка3 Удалить
Я не знаю почему сверху выбран диск "D" т.к должна была быть выбрана папка test т.к. все эти папки в папке test.
Я приписал к папке "Удалить" которою нужно удалить.

Отправлено: 16:48, 18-10-2016 | #5


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Странная какая-то задача, но...
Код: Выделить весь код
pushd d:\test
for /f "delims=" %%i in ('dir .\ /a:d /b') do (
if exist "%%i\folder1" rd /s /q "%%i\folder1"
if exist "%%i\folder3" rd /s /q "%%i\folder3"
)
popd
Примерно так.
Если в названии папок присутствуют кирилические символы cmd\bat сохранять в 866 кодировке

Отправлено: 17:04, 18-10-2016 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Особо не проверялось. Тренируйтесь на копии, удалив echo.
Код: Выделить весь код
for /d %%i in ("D:\test\*.*") do 2>nul (echo rd /s /q "%%~fi\Папка1" & echo rd /s /q "%%~fi\Папка3")

Отправлено: 17:06, 18-10-2016 | #7


Пользователь


Сообщения: 83
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Iska:
Особо не проверялось. Тренируйтесь на копии, удалив echo. »
Ваш код не работает.
Цитата Elven:
Странная какая-то задача, но... »
Ваш работает но есть вопрос.
Возможно это нужно было сказать сначала , но я об этом чет не подумал...
Использовав команду "pushd d:\test" или цикл for найти в этой папке , в нашем случае это "d:\test" все папки c именем "blabla" и удалить , либо другое имя(не важно) ?
т.к. данный скрипт работает только с такой структурой папкой которую я выше кинул. т.к. я не думал что вы сделаете скрипт для данной структуры папок , а я думал что вы сделаете чтоб он проверил данную папку(в нашем случае это test) и все под- папки в ней на "blabla"(или другое имя) папки и удалит их .

P.S "forfiles" не подходит ?

P.S Сделал данный скрипт :
Код: Выделить весь код
FORFILES /P . /M folder1 /S /C  "cmd /c RD /S /Q @file"
Но нельзя ли добавить несколько масок ? Т.е где
Код: Выделить весь код
/M folder1
добавить еще к этому
Код: Выделить весь код
folder2 folder3
Но есть одна проблема из-за того что идет /S
он удаляет все папки с этим названием.
Пример 3:
Код: Выделить весь код
├───materials
│   └───models (А он удаляет и эту : / но ее не нужно удалять.)
│       └───weapons
│    
│ 
│              
├───models "Хочу чтоб эту удалил и остальные ниже т.е (models scripts sound)"
│   └───weapons
├───scripts
│   └───weapons
└───sound
    └───weapons
Код: Выделить весь код
FORFILES /P . /M models /S /C  "cmd /c RD /S /Q @file"
Я ввожу имя папки "models" и я хочу чтоб он удалил ту папку models которая не в каталоге materials , а он и ее удаляет : /
Или нужно сделать чтоб он удалял ВСЕ папки используя эту команду
Код: Выделить весь код
FORFILES /P . /M models /S /C  "cmd /c RD /S /Q @file"
кроме папки materials и ее подпапок.

Вообщем несколько раз дополнял , надеюсь понятно вышло.

Последний раз редактировалось GIGABAIT, 18-10-2016 в 19:53.


Отправлено: 18:01, 18-10-2016 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата GIGABAIT:
Ваш код не работает. »
Проверил. Работает.

Отправлено: 19:52, 18-10-2016 | #9


Пользователь


Сообщения: 83
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Iska:
Проверил. Работает. »
Да , работает. Забыл сменить кодировку на 866.
Но нельзя ли сделать скрипт как я описал выше ?
Т.е он будет проверять "test" папку и ее подпапки на "folder1" папки и будет удалять их ? Но добавив маску на folder2 и в ней будет подпапка folder1 которую он не будет удалять. То-есть обратная маска ?
Пример 3 :
Код: Выделить весь код
├───materials
│   └───models 
│       └───weapons
│    
│ 
│              
├───models  1
│   └───weapons
├───scripts
│   └───weapons
└───sound
    └───weapons
Я хочу чтоб он удалил models , scripts , sound. Но не models в materials. Почему мне нужно чтоб скрип проверял test и все подпапки ? Потому что в папке "test (не важно в какой)" разно уровневая система папок.
Пример 4 :
Скрытый текст
Код: Выделить весь код
Test
├───Folder4
│   ├───Folder1
│   │   ├───Folder2
│   │   │   ├───Folder1
│   │   │   │   └───Folder2
│   │   │   │       └───Папка2
│   │   │   └───Folder3
│   │   │       └───Папка2
│   │   └───Folder3
│   │       └───Папка2
│   ├───Folder2
│   │   ├───Folder1
│   │   │   └───Folder2
│   │   │       └───Папка2
│   │   └───Folder3
│   │       └───Delthis ------------------
│   └───Folder3
│       ├───Folder1
│       │   ├───Folder2
│       │   │   ├───Folder1
│       │   │   │   └───Folder2
│       │   │   │       └───Папка2
│       │   │   ├───Folder3
│       │   │   │   └───Папка2
│       │   │   └───Папка2
│       │   └───Folder3
│       │       └───Папка2
│       └───Folder2
│           ├───Folder1
│           │   └───Folder2
│           │       └───Папка2
│           └───Folder3
│               ├───Folder1
│               │   ├───Folder2
│               │   │   ├───Folder1
│               │   │   │   └───Folder2
│               │   │   │       └───Папка2
│               │   │   └───Folder3
│               │   │       └───Папка2
│               │   └───Folder3
│               │       └───Папка2
│               └───Folder2
│                   ├───Folder1
│                   │   └───Folder2
│                   └───Folder3
│                       └───Delthis ------------------
└───Folder5
    ├───Folder1
    │   ├───Folder1
    │   │   ├───Folder2
    │   │   │   └───Folder1
    │   │   └───Folder3
    │   ├───Folder2
    │   └───Folder3
    │       └───Folder3
    ├───Folder2
    │   └───Папка2
    └───Folder3
        └───Delthis

В примере 4 видно что я хочу объяснить. Цикл или FORFILES должен пройтись по всем этим папкам и подпапкам , и удалить папки "folder3" с подпапкой delthis но не трогать другие папки folder3.

Цитата Elven:
Странная какая-то задача, но... »
У меня 10 папок , в одной папке 3 папки , я хочу удалить эти 3 папки с помощью cmd т.к руками это делать долго.

Последний раз редактировалось GIGABAIT, 19-10-2016 в 06:40.


Отправлено: 06:34, 19-10-2016 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удалить папки в папках

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Темы и Стили - Немного увлечить отступление между файлы в папках(но не папки) Andre4s11 Оформление Windows 11/ 10 / 8 / 7 / Vista 0 05-02-2016 22:02
Службы - [решено] удалить Удалить содержимое папки IZOprogman Microsoft Windows 7 5 31-05-2015 19:52
Разное - Какие папки можно удалить? dimka11 Microsoft Windows 8 и 8.1 1 20-09-2012 01:10
Разное - какие файлы и папки я могу смело удалить из папки windows fyt Microsoft Windows 2000/XP 6 05-01-2012 18:14
Разное - Как удалить профильные папки из Личной Папки без последствий? Котяр Microsoft Windows 7 0 28-11-2009 20:36




 
Переход