从所有用户本地AppData中删除公用文件夹

时间:2014-08-26 06:52:11

标签: windows file-io command appdata allusersprofile

Windows 7/8中的所有用户都有变量吗?例如,假设PC上的每个用户在他们的桌面上都有一个特定的文件夹,我想通过可以通过命令提示符执行的命令一次删除所有这些文件夹,这可能吗?

脚本在我们的每个用户本地AppData中为我们的VPN客户端放置了首选项文件,这使得VPN客户端在您启动客户端时自动放入地址。问题是这个地址现在已经过时了,我们使用了一个新的地址。所以我想找到一种方法来执行一个命令,删除所有用户的所有这些preferences.xml文件。

我尝试使用谷歌搜索,但我不认为所有用户都有变量。但是我想在这里要确定一下。我曾希望有一些类似于'del C:\ users \%ALLUSERS%\ AppData \ Local \ example \ preferences.xml'的东西可以工作,但是在谷歌搜索之后就出现了没有这样的东西。

1 个答案:

答案 0 :(得分:2)

您可以使用powershell删除userprofile临时目录下的所有项目。如果您对将要采取的措施感到满意,请参阅下面的解决方案并删除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"
  )
)