我找到了一个用于删除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数据,而这些数据是所有其他本地配置文件构建的。这张图片是在圣诞假期期间部署的,因此无数用户已经在各种机器上登录(并创建了配置文件)。
答案 0 :(得分:1)
在这里,你好友。只需遍历c:\Users
的所有目录,然后if exist (profiledir)
继续清理。使用conditional execution来处理成功/失败(比我认为的if %ERRORLEVEL%==0
更清晰),并使用delayedexpansion
来评估循环中的变量。如果第一个&&
的任一侧出现非零退出,则||
代码块将触发。换句话说,如果rd
或del *
失败,则会出现失败的消息并且错误计数会递增。
@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%