PDA

Показать полную графическую версию : [решено] удаление содержимого папок


daswer
31-03-2009, 17:14
Сведущая проблема есть папка "обмен" в сети на серваке в ней куча папок для каждого отдела, нужно каждую ночь чистить их, задача тривиальная

c:
cd c:\data
rmdir /s /q c:\data\ОТДЕЛ1
mkdir c:\data\ОТДЕЛ1
rmdir /s /q c:\data\ОТДЕЛ2
mkdir c:\data\ОТДЕЛ2
dir > list.txt

так я реализовал раньше, но надо чтоб на папку ОТДЕЛx применялись разрешения в АД, а при моем подходе при создание этой папки все разрешения затираются
пример разрешений для отдела1 (Админ-FC Отдел1-FC Отделы R) и так для для каждого отдела, я уже понял что мой подход не правильный, понял что нужно папки не пере создавать а просто их вычищать, помогите разобраться с проблемой.

Petya V4sechkin
31-03-2009, 17:43
daswer, можно так:
@Echo Off
SetLocal EnableExtensions

CD /D C:\data
If %ErrorLevel% Neq 0 GoTo :Eof

For /F "Delims=" %%I In ('Dir /AD /B') Do (
For /F "Delims=" %%J In ('Dir /AD /B "%%I"') Do RD /S /Q "%%I\%%J"
Del /F /Q "%%I\*"
Del /F /Q /AH "%%I\*"
Del /F /Q /AS "%%I\*"
)

2-й вариант: удалять все (как вы делаете), но после этого с помощью Cacls или SubInACL (http://www.microsoft.com/downloadS/details.aspx?familyid=E8BA3E56-D8FE-4A91-93CF-ED6985E3927B&displaylang=en) выставить нужные разрешения.

Iska
31-03-2009, 23:33
daswer, можете попробовать на основе такого:
@echo off
setlocal enableextensions enabledelayedexpansion

if exist "%~1" (
echo Clearing folders in [%~1].
pushd "%~1" && (rmdir /s /q "%~1" & popd) 2>nul
) else (
echo Not found [%~1]
)

endlocal
exit /b 0
Что-то наподобие:
ClearFolder.cmd "c:\data\ОТДЕЛ1"
ClearFolder.cmd "c:\data\ОТДЕЛ2"
Будьте осторожны с UNC-путями.

daswer
02-04-2009, 08:22
Спасибо большое. Помогло.

Павел_Князь@vk
21-08-2013, 15:24
почти такая же проблема, у меня есть 3 директории в каждой из которых примерно по сотне директорий и в каждой из них куча файлов, мне нужно очистить каждую директорию от файлов, не удаляя директории, попробовал сам - получается удалить вместе со вложенными директориями.

Sphinx114
21-08-2013, 16:02
Павел_Князь@vk, вот так можно очистить от файлов 3 папки с подпапками:
del /f /s /q /a "papka1" "papka2" "papka3"

Павел_Князь@vk
21-08-2013, 16:19
Sphinx114, спасибо ! уже решил, немного по-другому, я сначала просто дико тормозил, давая винде "rm" :) а она меня не понимала




© OSzone.net 2001-2012