Кажется, что вы пытаетесь удалить файлы у каждого пользователя, вы можете просто использовать оператор 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
выходит из сценария.