【问题标题】:Delete a common folder from all users local AppData从所有用户本地 AppData 中删除一个公共文件夹
【发布时间】:2014-10-19 10:04:16
【问题描述】:

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

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

我试过用谷歌搜索它,但我不认为所有用户都有一个变量。但我想我会在这里问一下。我曾希望类似于 'del C:\users\%ALLUSERS%\AppData\Local\example\preferences.xml' 的东西会起作用,但在谷歌搜索后似乎没有这样的东西。

【问题讨论】:

    标签: windows file-io command appdata allusersprofile


    【解决方案1】:

    您可以使用 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"
      )
    )
    

    【讨论】:

    • 谢谢 Kokkie。这种方法似乎效果很好,我很感激。但是,是否可以在命令提示符下做类似的事情?在用户计算机上安装软件时,我们已经从命令提示符运行命令,并且能够将其与我们已经拥有的内容结合起来是最优化的。不过,我一定会保存的,再次感谢!
    • 非常感谢,Kokkie。你帮了我很大的忙,为此我很感激。我对你的 MS-DOS 命令做了一个微小的修改,我发现这个命令完全符合我的要求:pastebin.com/ivZz1niG - 它说 Cisco 而不是 Temp,因为我们需要删除 Cisco 文件夹中的首选项文件。再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    相关资源
    最近更新 更多