修改批处理脚本以影响所有用户帐户

时间:2015-02-04 14:45:44

标签: firefox batch-file cookies windows-7 browser-history

我找到了一个用于删除firefox cookie和web缓存的脚本来修复我在我支持的许多机器上遇到的问题,我需要修改脚本以影响所有用户文件夹而不是当前用户。是否有一个简洁的命令或更改我可以达到所有用户文件夹?

@echo off
set DataDir=C:\Users\%USERNAME%\AppData\Local\Mozilla\Firefox\Profiles
del /q /s /f "%DataDir%"
rd /s /q "%DataDir%"
for /d %%x in (C:\Users\%USERNAME%\AppData\Roaming\Mozilla\Firefox\Profiles\*) do del /q /s /f %%x\*sqlite
cls
IF %ERRORLEVEL%==0 (
    @echo "Success Message"
    timeout 10
) ELSE (
    @echo "Error Message"
    exit 1001
)

从透视角度来看,环境是共享域上的几个物理上独立的计算机实验室,用户通过其域帐户登录。最初的问题是,部署到所有计算机的映像最终在默认配置文件中为我们的一个IT用户提供了登录cookie和webcache数据,而这些数据是所有其他本地配置文件构建的。这张图片是在圣诞假期期间部署的,因此无数用户已经在各种机器上登录(并创建了配置文件)。

1 个答案:

答案 0 :(得分:1)

在这里,你好友。只需遍历c:\Users的所有目录,然后if exist (profiledir)继续清理。使用conditional execution来处理成功/失败(比我认为的if %ERRORLEVEL%==0更清晰),并使用delayedexpansion来评估循环中的变量。如果第一个&&的任一侧出现非零退出,则||代码块将触发。换句话说,如果rddel *失败,则会出现失败的消息并且错误计数会递增。

@echo off
setlocal

set "errors=0"

for /f "delims=" %%I in ('dir /b /a:d c:\Users') do (

    set "DataDir=c:\Users\%%I\AppData\Local\Mozilla\Firefox\Profiles"
    setlocal enabledelayedexpansion

    if exist "!DataDir!" (

        rd /s /q "!DataDir!" && (

            for /d %%x in ("!DataDir:\Local\=\Roaming\!\*") do (

                del /q /s /f "%%~fx\*sqlite" && (
                    echo account %%~nI: Cleaning of Firefox profiles succeeded.
                )
            )

        ) || (
            echo account %%~nI: Cleaning of Firefox profiles FAILED.
            set /a errors += 1
        )

    )

    endlocal
)

exit /b %errors%