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

Название темы: Удаление по маске
Показать сообщение отдельно

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


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

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


X.509, а куда пропало присвоение переменной ExcList ? Понятно, что файл в цикле for /F не найден.
Там ведь изначально стоял код:
Код: Выделить весь код
::Файл-список исключений каталогов любой степени вложенности
Set ExcList=L:\bash\test\Exclude.txt
А вот почему ругань на метку check - не знаю, у меня этот же код на неё не ругается.

Я добавил текст, который у вас пропал, вот что получилось:
Код: Выделить весь код
@echo off
Setlocal EnableDelayedExpansion EnableExtensions

Set Src=C:
set mask=*.txt
::Файл-список исключений каталогов любой степени вложенности
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 del /q "%~1"\%mask%
Exit /b

::Проверить есть ли переданный как аргумент каталог в массиве
:Check
For /L %%A in (1,1,%n%) do (
if /i "%~1"=="!Ex%%A!" Exit /B 1
)
Exit /b 0
И у меня это работает.

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


Последний раз редактировалось Гуллипут, 28-04-2014 в 22:22.


Отправлено: 22:13, 28-04-2014 | #12

Название темы: Удаление по маске