代码之家  ›  专栏  ›  技术社区  ›  ShadowSF96

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

  •  1
  • ShadowSF96  · 技术社区  · 10 年前

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

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

    我试过在谷歌上搜索,但我不认为所有用户都有一个变量。但我想我会问这里以确定。我曾希望类似“del C:\users\%ALLUSERS%\AppData\Local\example\preferences.xml”这样的方式能够奏效,但在谷歌搜索后,似乎没有这样的东西。

    1 回复  |  直到 10 年前
        1
  •  3
  •   Kokkie    10 年前

    您可以使用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"
      )
    )
    
    推荐文章