Компьютерный форум 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=320537)

vasheezloy 07-11-2016 13:09 2685406

Удаление папок в профайлах пользователей
 
задача
Удалить папки с определенным именем, например images, из всех профилей пользователей когда либо логинившихся на компьютер, со всем содержимым внутри.
привязка к смд тк тачка на хп

vasheezloy 07-11-2016 13:20 2685414

а все, не правильно искал по форуму=)
http://forum.oszone.net/thread-189985.html
то что надо было, тему можно удалить

vasheezloy 07-11-2016 13:50 2685421

как можно сократить уровень поиска во вложенных папках?

for /f "tokens=1 delims=" %%D in ('dir "c:\users" /ad /b /s') do rd /q /s "%%D\images" > nul 2>&1
проверяет абсолютно все папки в профайлах, нужно сократить поиск до 3 уровня вложенности
admin\desktop\new_folder
3й уровень вложенности, я это имею ввиду

Iska 07-11-2016 14:39 2685440

В этом коде — никак. «/s» при dir не имеет возможности ограничения.

alpap 07-11-2016 16:21 2685491

vasheezloy,
если просто надо (без привязки к каккому-то коду), можно так:
Код:

@echo off
set "d0=0_uroven"
set "fl=%Userprofile%\Desktop\file.txt"
::tree /f "%d0%">"%fl%"
pushd "%d0%"
 for /f "delims=" %%a in ('dir /a/b') do echo %%~dpa%%a>>"%fl%"& 2>nul pushd "%%~dpa%%a"
  for /f "delims=" %%a in ('dir /a/b') do echo %%~dpa%%a>>"%fl%"& 2>nul pushd "%%~dpa%%a"
  for /f "delims=" %%a in ('dir /a/b') do echo %%~dpa%%a>>"%fl%"
  popd
 popd
popd
exit /b

Вот содержимое "file.txt":
Скрытый текст

Код:

Структура папок
Серийный номер тома: xxx
C:\USERS\xxx\DESKTOP\0_UROVEN
│  07.11.2016  13 '25 '33.txt
│ 
└───1_uroven
    │  07.11.2016  13 '25 '27.txt
    │ 
    └───2_uroven
        │  07.11.2016  13 '25 '20.txt
        │ 
        └───3_uroven
                07.11.2016  13 '25 '14.txt
               
C:\Users\xxx\Desktop\0_uroven\07.11.2016  13 '25 '33.txt
C:\Users\xxx\Desktop\0_uroven\1_uroven
C:\Users\xxx\Desktop\0_uroven\1_uroven\07.11.2016  13 '25 '27.txt
C:\Users\xxx\Desktop\0_uroven\1_uroven\2_uroven
C:\Users\xxx\Desktop\0_uroven\1_uroven\2_uroven\07.11.2016  13 '25 '20.txt
C:\Users\xxx\Desktop\0_uroven\1_uroven\2_uroven\3_uroven


megaloman 07-11-2016 19:51 2685545

Удалить папки с определенным именем, например images, из всех профилей пользователей когда либо логинившихся на компьютер, со всем содержимым внутри. ИМХО, как я понимаю задачу, это можно сделать так:
Код:

Уровни вложенности  1    2      3
Папки                admin\desktop\new_folder

Код:

@Echo Off

Set "DelDir=images"

FOR /F "tokens=1,2 delims=\" %%i IN ("%Userprofile%") Do Set "DProf=%%i\%%j"

FOR /F "usebackq delims=" %%i IN (`Dir "%DProf%\" /B /A:D-S-H`) DO (
        FOR /F "usebackq delims=" %%j IN (`Dir "%DProf%\%%i\" /B /A:D-S-H`) DO (
                If /I "%%j"=="%DelDir%" (
                        Rd /S /Q "%DProf%\%%i\%%j"
                ) Else (
                        FOR /F "usebackq delims=" %%k IN (`Dir "%DProf%\%%i\%%j\" /B /A:D-S-H`) DO (
                                If /I "%%k"=="%DelDir%" Rd /S /Q "%DProf%\%%i\%%j\%%k"
                        )
                )
        )
)



Время: 16:45.

Время: 16:45.
© OSzone.net 2001-