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

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

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

Новый участник


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

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


у меня здача стоит таким образом: при запуске 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
попробовал изменить 5 строчку. вместо:
Код: Выделить весь код
Set Src=L:\bash\test
просто поставил по маске, то есть:
Код: Выделить весь код
Set Src=C:\*.txt
в Exclude.txt просто добавил пару папок которые трогать не нужно (Wondows, Programm Files).
В общем не работает мой вариант. Куда копать?

Отправлено: 14:41, 23-04-2014

 

Ветеран


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

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


предлагаю использовать для данной задачи robocopy
например навскидку так
Код: Выделить весь код
robocopy /e /mov /r:0  c:\    d:\помойка  *.txt /xd c:\windows /xd "Program files"
а потом почистить d:\помойка

-------
консольный клиент telegram для Windows: www.elapser.info


Отправлено: 17:36, 23-04-2014 | #2



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

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


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


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

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


Цитата X.509:
Set Src=C:\*.txt »
Вообще-то, судя по тексту, программа рассчитана на
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
Благодарности: 0

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


Цитата Гуллипут:
Не проверяю придирчиво правильность исходного файла, но, если он работает. то изменить его надо так:
Set Src=C:
set mask=*.txt
.
.
.
if /i "%~1" neq "%Src%" Echo del /q "%~1"\%mask% »
Код: Выделить весь код
Не удается найти файл .
Не удается найти указанную метку пакетного файла - Check
Для продолжения нажмите любую клавишу . . .

Отправлено: 09:27, 24-04-2014 | #4


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


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

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


Получившийся текст - в студию ! А то беспредметный разговор получается.

-------
Разумный человек приспосабливается к миру, неразумный пытается приспособить мир к себе. Поэтому прогресс делают люди неразумные. (Дж. Б. Шоу)


Отправлено: 22:55, 24-04-2014 | #5


Ветеран


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

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


я не понимаю, зачем вообще городить скрипт, если уже есть родная утилита, которая делает то что надо.

-------
консольный клиент telegram для Windows: www.elapser.info


Отправлено: 09:13, 25-04-2014 | #6


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


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

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


Цитата Опиум:
же есть родная утилита »
Что за утилита ? Для кого она "родная" ? Если robocopy, то у меня, например, её нет.

-------
Разумный человек приспосабливается к миру, неразумный пытается приспособить мир к себе. Поэтому прогресс делают люди неразумные. (Дж. Б. Шоу)


Отправлено: 11:29, 26-04-2014 | #7


Ветеран


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

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


Гуллипут, http://ru.wikipedia.org/wiki/Robocopy

-------
консольный клиент telegram для Windows: www.elapser.info


Отправлено: 12:47, 26-04-2014 | #8


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


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

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


Цитата Опиум:
http://ru.wikipedia.org/wiki/Robocopy »
Это я читал. Но у меня XP, и в ближайшее время не планирую подниматься выше. Ну, не нравятся мне 7 и Vista. Хотя бы тем, что там нет полноэкранного режима для CMD и Far. Привычки у меня такие - неуютно в оконном режиме с Far'ом работать.
Правда, у автора вопроса ситуация может быть другая, так что интересно было бы знать его мнение о robocopy.

-------
Разумный человек приспосабливается к миру, неразумный пытается приспособить мир к себе. Поэтому прогресс делают люди неразумные. (Дж. Б. Шоу)


Отправлено: 10:25, 27-04-2014 | #9


Ветеран


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

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


Цитата Гуллипут:
Но у меня XP, »
RoboCopy есть в комплектах Resource Kit'ов.

Отправлено: 15:06, 27-04-2014 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход