Удалить общую папку из всех пользователей локальных 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"
  )
)
Другие вопросы по тегам