|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум 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 | |
|