Удаление содержимого конкретных папок
Добрый день!
Прошу вашей помощи! Необходимо создать файлик который бы обходил все папки в каталоге и удалял содержимое только из определенных.
Например, есть каталог C:\Web\ в котором содержится много подпапок. В каждой подпапке есть еще одна папка с именем "Документы" (пример C:\Web\1\Документы или C:\Web\2\Документы), но может и чуть более глубокая структура например C:\Web\3\Work\Документы. Необходимо, чтоб файл обходил все папки \подпапки и удалял содержимое папок с именем "Документы".
Своего ума не хватает, чтоб создать! Спасибо большое!
|
Код:
@Echo Off
cls
Set "BoxIn=Z:\Box_In"
Set "BoxDel=ДокУменты"
rem FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%BoxDel%" /b /s /a:D`) DO (
FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\" /B /S /A:D`) DO If /I "%%~nxf"=="%BoxDel%" (
Pushd "%%f" 2>nul &&(
Echo "%%f"
Rd /s /q "%%f" 2>nul
Popd
)
)
Pause
|
megaloman,
у меня на любую глубину только вот так заходит: dir /ad/b/s "C:\papka\*Документы", так "C:\papka\Документы" почему-то только на верхний уровень.
|
megaloman,
Спасибо за быстрый ответ! Но у меня не сработало! Подскажите как могу проверить, что не так. Команда
Цитата:
Цитата alpap
dir /ad/b/s "C:\papka\*Документы" »
|
показывает корректно все папки с подпапками
|
alpap,
Цитата:
Цитата alpap
у меня на любую глубину только вот так заходит: dir /ad/b/s "C:\papka\*Документы", так "C:\papka\Документы" почему-то только на верхний уровень. »
|
Я в ужасе. Это именно так, как бороться, не знаю. Но *Документы -это не решение, проверил, выбирает и еееДокументы и т д и т п
Поэтому:
Код:
@Echo Off
cls
Set "BoxIn=Z:\Box_In"
Set "BoxDel=ДокУменты"
FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\" /B /S /A:D`) DO If /I "%%~nxf"=="%BoxDel%" (
Pushd "%%f" 2>nul &&(
Echo "%%f"
Rd /s /q "%%f" 2>nul
Popd
)
)
Pause
GoTo :Eof
|
Вложений: 1
Цитата:
Цитата Art3m
Но у меня не сработало! Подскажите как могу проверить, что не так. Команда
dir /ad/b/s "C:\papka\*Документы" »
показывает корректно все папки с подпапками »
|
Это в командной строке? А батник, случаем, вы создали в 866 (Dos) кодировке? Иначе по умолчанию CMD корректно работать не будет - папки с русскими символами в имени найдены не будут. Прикрепляю мой переименованный батник в нужной кодировке.
Как вариант, который не приветствую, если сохраняете батник в 1251 (Windows) кодировке, то
Код:
@Echo Off
cls
Chcp 1251 >nul
Set "BoxIn=Z:\Box_In"
Set "BoxDel=ДокУменты"
FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\" /B /S /A:D`) DO If /I "%%~nxf"=="%BoxDel%" (
Pushd "%%f" 2>nul &&(
Echo "%%f"
Rd /s /q "%%f" 2>nul
Popd
)
)
Pause
GoTo :Eof
|
Вложений: 1
Проверил обновленный код - не удаляет! Файлы остались в тестовых каталогах! Разобрался. Не хотел русские буквы на компе понимать. Пересохранил правильно! Спасибо! Потестирую побольше!
|
Тут подумалось, а нельзя ли сделать чтоб батник работал из папки, без того чтоб путь задавать.Естественно, чтоб проверял эту папку и глубже, чтоб проблем не возникало, если на разных компах буква диска другая.
|
Art3m, чтоб батник работал из папки
Код:
@Echo Off
cls
Chcp 1251 >nul
Set "BoxIn=%~dp0"
Set "BoxDel=ДокУменты"
FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%" /B /S /A:D`) DO If /I "%%~nxf"=="%BoxDel%" (
Pushd "%%f" 2>nul &&(
Echo "%%f"
Rd /s /q "%%f" 2>nul
Popd
)
)
Pause
GoTo :Eof
Имхо, но это стремновато, не туда скопируете батник, случайно запустите, и потом будете искать возможность восстановить утерянное. ☺
|
Согласен, стремновато! Но где наша не пропадала)))
|
Время: 10:20.
© OSzone.net 2001-