Удалить общую папку из всех пользователей локальных AppData
Есть ли переменная для всех пользователей в Windows 7 / 8? Например, скажем, у каждого пользователя на ПК есть отдельная папка на рабочем столе, и я хотел бы удалить все эти папки сразу с помощью команды, которая может быть выполнена из командной строки, это возможно?
Сценарий помещает файл настроек для нашего VPN-клиента в локальные AppData каждого нашего пользователя, и это позволяет VPN-клиенту автоматически вводить адрес при запуске клиента. Проблема в том, что этот адрес устарел, а мы используем новый. Поэтому я хотел бы найти способ выполнить команду, которая удаляет все эти файлы Preferences.xml для всех наших пользователей.
Я пробовал гуглить, но не думаю, что есть переменная для всех пользователей. Но думал, что я попрошу здесь, чтобы быть уверенным. Я надеялся, что что-то вроде 'del C:\users\%ALLUSERS%\AppData\Local\example\preferences.xml' сработает, но, похоже, после поиска в Google его нет.
1 ответ
Вы можете удалить все элементы из временного каталога userprofile, используя powershell. Смотрите ниже решение и удалите опцию Whatif, если вы удовлетворены действиями, которые будут предприняты;
$users = Get-ChildItem c:\users | ?{ $_.PSIsContainer }
foreach ($user in $users){
$userpath = "C:\Users\$user\AppData\Local\Temp"
Try{
Remove-Item $userpath\* -Recurse -Whatif -ErrorVariable errs -ErrorAction SilentlyContinue
}
catch {
"$errs" | Out-File c:\temp\errors.txt -append
}
}
Для решения MS-DOS попробуйте это в командной строке:
for /f "delims=|" %f in ('dir /B /A:D-H-R c:\users') do echo "C:\Users\%f\AppData\Local\Temp\*"
В пакетном файле, который фактически удалит эти файлы и каталоги, он станет:
for /f "delims=|" %%f in ('dir /B /A:D-H-R c:\users') do (rmdir "C:\Users\%%f\AppData\Local\Temp\" /s/q || del "C:\Users\%%f\AppData\Local\Temp\*" /s/q)
if not errorlevel 1 (
echo "Finished with errors"
) else (
echo "Finished without errors"
)
)