|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удаление по маске |
|
|
CMD/BAT - Удаление по маске
|
Новый участник Сообщения: 5 |
у меня здача стоит таким образом: при запуске bat файла удалялось всё по маске (например *.txt) но не затрагивались бы системные папки такие как Windows, Program Files ну и т.д.
Я попробовал взять код: @echo off Setlocal EnableDelayedExpansion EnableExtensions ::Попка для удаления содержащих в ней каталогов Set Src=L:\bash\test ::Файл-список ислючений каталогов любой степени вложенности Set ExcList=L:\bash\test\Exclude.txt Call :Init Call :AllFolders "%Src%" pause Goto :eof ::Переписываем содержимое файла в массив (ускорение операций) :Init For /f "UseBackQ Delims=" %%A in ("%ExcList%") do ( Set /A n+=1 Set Ex!n!=%%A ) Exit /b ::Обходим папки рекурсивно :AllFolders Call :Check "%~1" if %errorlevel%==1 Exit /B For /f "delims=" %%A in ('dir /b /a:d "%~1"') do ( Call :AllFolders "%~1\%%A" ) ::Проверка не удаляем ли рабочий каталог if /i "%~1" neq "%Src%" Echo rd /s /q "%~1" Exit /b ::Проверить есть ли переданный как аргумент каталог в массиве :Check For /L %%A in (1,1,%n%) do ( if /i "%~1"=="!Ex%%A!" Exit /B 1 ) Exit /b 0 просто поставил по маске, то есть: в Exclude.txt просто добавил пару папок которые трогать не нужно (Wondows, Programm Files). В общем не работает мой вариант. Куда копать? |
|
Отправлено: 14:41, 23-04-2014 |
Ветеран Сообщения: 547
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 17:36, 23-04-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 70
|
Профиль | Отправить PM | Цитировать Цитата X.509:
1) удаление каталогов, а не файлов (команда rd) 2) указание входного каталога без всяких подстановочных символов типа *. Не проверяю придирчиво правильность исходного файла, но, если он работает. то изменить его надо так: Set Src=C: set mask=*.txt . . . if /i "%~1" neq "%Src%" Echo del /q "%~1"\%mask% И даже это не совсем то, что надо, потому что Echo в этой строке явно рассчитано не на реальное удаление, а на отладочную проверку данного алгоритма. Я этот приём часто использую. После того, как убедишься, что выдаются на экран нужные команды удаления, надо будет убрать Echo. |
|
------- Отправлено: 23:47, 23-04-2014 | #3 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Цитата Гуллипут:
|
|
Отправлено: 09:27, 24-04-2014 | #4 |
Пользователь Сообщения: 70
|
Профиль | Отправить PM | Цитировать Получившийся текст - в студию ! А то беспредметный разговор получается.
|
|
------- Отправлено: 22:55, 24-04-2014 | #5 |
Ветеран Сообщения: 547
|
Профиль | Сайт | Отправить PM | Цитировать я не понимаю, зачем вообще городить скрипт, если уже есть родная утилита, которая делает то что надо.
|
------- Отправлено: 09:13, 25-04-2014 | #6 |
Пользователь Сообщения: 70
|
Профиль | Отправить PM | Цитировать Цитата Опиум:
|
|
------- Отправлено: 11:29, 26-04-2014 | #7 |
Ветеран Сообщения: 547
|
Профиль | Сайт | Отправить PM | Цитировать Гуллипут, http://ru.wikipedia.org/wiki/Robocopy
|
------- Отправлено: 12:47, 26-04-2014 | #8 |
Пользователь Сообщения: 70
|
Профиль | Отправить PM | Цитировать Цитата Опиум:
Правда, у автора вопроса ситуация может быть другая, так что интересно было бы знать его мнение о robocopy. |
|
------- Отправлено: 10:25, 27-04-2014 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Гуллипут:
|
|
Отправлено: 15:06, 27-04-2014 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Удаление каталогов по маске. | mishgan2004 | Скриптовые языки администрирования Windows | 4 | 20-07-2017 14:00 | |
CMD/BAT - Удаление файлов по маске | IlyaBarkov | Скриптовые языки администрирования Windows | 6 | 15-10-2013 05:03 | |
VBS/WSH/JS - [решено] удаление старых файлов по маске | support23 | Скриптовые языки администрирования Windows | 1 | 03-06-2013 08:41 | |
Delphi - Перемещение и удаление файлов по маске. | Putin-mode | Программирование и базы данных | 1 | 21-06-2010 12:16 |
|