Пакетный сценарий для нескольких пользователей на общем компьютере - PullRequest
0 голосов
/ 25 сентября 2018

Я очень мало знаю о кодировании, но я собрал вместе пакет очистки.

Я не могу понять, как запустить его для каждого пользователя на компьютере с общим доступом.

Что у меня естьвыглядит следующим образом:

cd C:\Users\%username%\AppData\Local
rmdir /S /Q Temp
cd C:\
del C:\Windows\Prefetch\*.* /Q/F/S
del C:\Windows\Temp\*.* /Q/F/S
del C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Recent Items\*.* /Q
del "C:\Users\%USERNAME%\AppData\Local\Mozilla\Firefox\Profiles\ilk2mwjz.default\cache2\*.*"  /s /f /q /a
del "C:\Users\%USERNAME%\AppData\Local\Google\Chrome\User Data\Default\cache\*.*" /s /f /q /a
del "C:\Users\%USERNAME%\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\AC\*.*" /s /f /q /a

У меня было for /d %%a in (C:\Users\*) в начале, но, похоже, это сломало.

1 Ответ

0 голосов
/ 26 сентября 2018

Кажется, что вы пытаетесь удалить файлы у каждого пользователя, вы можете просто использовать оператор FOR для CD, чтобы указать правильный каталог, в котором находится файл. Ниже приведен пример сильфона.

:search
FOR /D %%G IN ("C:\Users\*") DO IF EXIST "%%~fG\desktop\*.ico" (
    set correctDir=%%G\desktop
    goto foundFile
)
goto :eof

:foundFile
cd "%correctDir%"
del /S *.ico
goto :search

Сценарий выше удалит все .ico файлы с каждого рабочего стола пользователя.Он работает путем поиска на каждом рабочем столе любых существующих .ico файлов и первым результатом будет CD к нему.Цикл будет возвращаться к оператору FOR, пока он не найдет больше .ico на рабочих столах пользователей.Основа кода была взята из моего оригинального, но похожего ответа в потоке - пакетный скрипт для удаления всех значков со всех рабочих столов пользователей .

Используя этот метод, мы можем сделать несколько файлов/ папки для каждого пользователя. Обязательно для запуска этого сценария с правами администратора, поскольку в некоторых местах требуется доступ администратора для удаления объектов!

@ECHO OFF

Rem These item's are not user specific so we can just remove them.
del C:\Windows\Prefetch\*.* /Q /F /S
del C:\Windows\Temp\*.* /Q /F /S

Echo Windows\Prefetch\*.* Was deleted for all users!
Echo Windows\Temp\*.* Was deleted for all users!
goto File1

Rem The following items will be removed from each users.
Rem First Object.
:File1
FOR /D %%G IN ("C:\Users\*") DO IF EXIST "%%~fG\AppData\Local\Temp\*.*" (
    rem Here we need to CD one less layer to delete the folder.
    set "correctDir=%%G\AppData\Local"
    goto Found1
)
Echo Local\Temp\*.* Was deleted on all users!
goto File2

:Found1
cd "%correctDir%"
rmdir /S /Q Temp
goto File1

Rem Second object.
:File2
FOR /D %%G IN ("C:\Users\*") DO IF EXIST "%%~fG\AppData\Roaming\Microsoft\Windows\Recent Items\*.*" (
    set "correctDir=%%G\AppData\Roaming\Microsoft\Windows\Recent Items"
    goto Found2
)
Echo Windows\Recent Items\*.* Was deleted on all users!
goto File3

:Found2
cd "%correctDir%"
del /Q *.*
goto File2

Rem Third object.
:File3
FOR /D %%G IN ("C:\Users\*") DO IF EXIST "%%~fG\AppData\Local\Mozilla\Firefox\Profiles\ilk2mwjz.default\cache2\*.*" (
    set "correctDir=%%G\AppData\Local\Mozilla\Firefox\Profiles\ilk2mwjz.default\cache2"
    goto Found3
)
Echo ilk2mwjz.default\cache2\*.* Was deleted on all users!
goto File4

:Found3
cd "%correctDir%"
del /S /F /Q /A *.*
goto File3

Rem Forth object.
:File4
FOR /D %%G IN ("C:\Users\*") DO IF EXIST "%%~fG\AppData\Local\Google\Chrome\User Data\Default\cache\*.*" (
    set "correctDir=%%G\AppData\Local\Google\Chrome\User Data\Default\cache"
    goto Found4
)
Echo Default\cache\*.* Was deleted on all users!
goto File5

:Found4
cd "%correctDir%"
del /S /F /Q /A *.*
goto File4

Rem Fifth object.
:File5
FOR /D %%G IN ("C:\Users\*") DO IF EXIST "%%~fG\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\AC\*.*" (
    set "correctDir=%%G\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\AC"
    goto Found5
)
Echo Microsoft.MicrosoftEdge_8wekyb3d8bbwe\AC\*.* Was deleted on all users!
goto Completed

:Found5
cd "%correctDir%"
del /S /F /Q /A *.*
goto File5

Rem Finished Tasks.
:Completed
echo All Objects removed from users!
pause

goto :eof

Для основ команд

  • FOR /D повторяетсядля всех каталогов с помощью переменной %%G.
  • %%~fG расширяется до полного пути к каталогу в %%G.
  • IF EXIST проверяет, существует ли файл.
  • CD указывает, что вы хотите перейти в родительский каталог.
  • goto :eof выходит из сценария.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...