Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Очистка папок в директории со списком исключения (http://forum.oszone.net/showthread.php?t=328404)

mazila-iia 17-07-2017 17:03 2752029

Очистка папок в директории со списком исключения
 
Добрый день.

Есть задача по очистке определенных папок в директории. Помимо всего прочего некоторые папки трогать нельзя. Чувствую, что копать надо в сторону vbs, но, к сожалению, в нем не силен. Есть скрипт, оставленный прошлым админом, который удаляет все папки из директории, кроме тех, которые находятся в исключении
Код:

setlocal enableextensions enabledelayedexpansion

rem Укажите местонахождение директории для очистки
set sTargetFolder=C:\1

rem Поддиректория (или файл), которая НЕ должна удаляться
set sExcludeFilesOrFolders="5"

for /f "tokens=*" %%i in ('dir "%sTargetFolder%" /b /a:-d') do (
        set /a bDelete = 1
       
        for %%j in (%sExcludeFilesOrFolders%) do (
                if /i "%%i" equ "%%~j" set /a bDelete = 0
        )
       
        if !bDelete! equ 1 del /f /q "%sTargetFolder%\%%i"
)

for /f "tokens=*" %%i in ('dir "%sTargetFolder%" /b /a:d') do (
        set /a bDelete = 1
       
        for %%j in (%sExcludeFilesOrFolders%) do (
                if /i "%%i" equ "%%~j" set /a bDelete = 0
        )
       
        if !bDelete! equ 1 rd /s /q "%sTargetFolder%\%%i"
)

endlocal
exit /b 0

В директории "C:\1", допустим, находятся папки 2,3,4,5,6. Скрипт выше удаляет все, кроме папки 5. А мне необходимо, чтобы он именно очищал содержимое папок, которые не включены в исключения

Заранее благодарю

Iska 17-07-2017 17:27 2752037

Цитата:

Цитата mazila-iia
Есть скрипт, оставленный прошлым админом, который удаляет все папки из директории, кроме тех, которые находятся в исключении »

Меня терзают смутные сомнения… Ваш прошлый админ — не этот: CMD/BAT - [решено] Удалить всё кроме заданной папки ;)?!


Цитата:

Цитата mazila-iia
чтобы он именно очищал содержимое папок, »

И файлы, и вложенные папки? Без исключений?

Цитата:

Цитата mazila-iia
В директории "C:\1", допустим, находятся папки 2,3,4,5,6. »

А файлы в C:\1 надо удалять?

mazila-iia 17-07-2017 17:35 2752038

Цитата:

Цитата Iska
Цитата mazila-iia:
Есть скрипт, оставленный прошлым админом, который удаляет все папки из директории, кроме тех, которые находятся в исключении »
Меня терзают смутные сомнения… Ваш прошлый админ — не этот: CMD/BAT - [решено] Удалить всё кроме заданной папки ?! »

Ага, похоже этот :)

И файлы, и вложенные папки. Файлы в C:\1 тоже надо, но, на самом деле, это не так критично
Я, к сожалению (а может и к счастью), больше по линуксу поэтому вообще пока ничего в голову путного не приходит, как это реализовать

Iska 17-07-2017 17:46 2752041

Цитата:

Цитата mazila-iia
Файлы в C:\1 тоже надо, но, на самом деле, это не так критично »

Они и так сейчас удаляются.


Замените:
Код:

        if !bDelete! equ 1 rd /s /q "%sTargetFolder%\%%i"
на:
Код:

        if !bDelete! equ 1 pushd "%sTargetFolder%\%%i" && (
                rd /s /q "%sTargetFolder%\%%i"
                popd
        )

Не проверялось.

megaloman 17-07-2017 18:21 2752047

Код:

@Echo Off

Set "BoxIn=Z:\Folder 1"

Set Exclude="Folder 5" "Folder 7"

Del /Q "%BoxIn%\*.*"
FOR /D %%f IN ("%BoxIn%\*.*") DO Call :Purgen "%%f"
GoTo :Eof

:Purgen
        FOR %%d IN (%Exclude%) DO If /I %%d=="%~nx1" GoTo :Eof
        Pushd %1&& (Rd %1 /S /Q 2>nul &Popd)
GoTo :Eof

В "Folder 1" имеются куча папок. Они очистятся все, кроме папок указанных в списке Exclude. В списке может быть много исключений. В корне "Folder 1" удаляются все файлы.

mazila-iia 18-07-2017 08:01 2752175

Цитата:

Цитата megaloman
В "Folder 1" имеются куча папок. Они очистятся все, кроме папок указанных в списке Exclude. В списке может быть много исключений. В корне "Folder 1" удаляются все файлы »

Похоже это то, что нужно. Большое спасибо


Время: 22:48.

Время: 22:48.
© OSzone.net 2001-