阅读:6415回复:33
写一个帮助新手设置参数的脚本
Tagged_by_kmc : 扩展 不兼容 配置文件 版本号 checkcompatibility extensions
一直以来Firefox新人都会为扩展伪不兼容而困扰,即:实际上是能用的,由于版本号不够而不允许安装。对此其实只需要在about:config中取消兼容性检查: extensions.checkCompatibility 设置为false 再安装扩展即可。不过,由于Firefox的门槛较高,很多新人不知道如何去调整about:config,尤其是上述键值默认不存在,需要新建。不仅如此,Firefox的很多设置,都很晦涩难懂。我当然知道Opera更难,但上次看到胖子写了个孟婆汤后,觉得有时如果能写一个脚本让用户运行,即可帮其调整Firefox的设置参数,岂不是很方便? Firefox的设置主要是在配置文件夹中,而事实上,大部分用户不知道这个文件夹在哪里。情有可原,因为这个文件夹隐藏在一个很深的、对XP而言深达七级、各系统不尽相同的目录中。而在Windows下,通过 cd %appdata%\mozilla\firefox\profiles 可以进入,如此完成了一半的工作。 下面的情况是还有一级目录要进入,这里每个用户的配置文件夹名不尽相同,印象中对于一个没有自己修改过Firefox用户,这个配置文件夹应该是8位随机字母_数字组合.Default,例如 mmbi5lg7.Default 有且只有一个目录,这时如果用 dir /b /d *Default* 可以得到mmbi5lg7.Default,现在首先的问题是在Dos命令中,如何再cd进入这个目录呢?我的办法很笨,是把这个结果存成文件,再用for命令读出来,即 dir /b /d *Default* >temp.txt for /f "tokens=1 delims=" %%i in (temp.txt) do cd %%i del ..\temp.txt OK现在我们在用户的Default配置文件夹了,一切都归我们控制啦(奸笑)。 prefs.js?不,还是拿user.js比较好,因为这个文件默认没有,搞砸了可以直接删掉;且prefs.js太乱,不碰为妙。下面就是 echo user_pref("extensions.checkCompatibility", false); >>user.js echo user_pref("extensions.checkUpdateSecurity", false); >>user.js 用>>表追加,以免清除之前已有的,我记得重复的条目会被Firefox自己清理掉,所以不用担心加重复了。 OK,现在屏幕那边的MM已经可以装扩展了。 下面的问题是:万一 %appdata%\mozilla\firefox\profiles 目录下不止一个配置文件夹呢?一般来说这个目录下如果有超过一个的文件夹,基本上已经证明该用户知道配置文件这回事。但为了以防万一,我觉得有一个很简单的办法。就是在进入mmbi5lg7.Default之后,测试一下parent.lock这个文件是否存在,前提是用户没有关掉Firefox,而这也正好,因为如果用户有多个配置文件,用这个方法可以测试到底应该改哪一个。具体来说可以在上面那条for语句中加上if判断,并且把存在parent.lock的目录作为最终结果返回,再进行下一步echo user.js的操作(当然也可以在找到parent.lock后马上操作user.js并break掉后面的for循环)。 水平有限目前还没有完善,等高手来看看。 cd /d %appdata%\mozilla\firefox\profiles dir /d /b *Default* >profilename.txt for /f "tokens=1 delims=" %%i in (profilename.txt) do cd %%i del ..\profilename.txt echo user_pref("extensions.checkCompatibility", false); >>user.js echo user_pref("extensions.checkUpdateSecurity", false); >>user.js |
|
|
1楼#
发布于:2009-08-28 20:20
咳咳.....还是不知道这个能干什么用..
运行了 cd /d %appdata%\mozilla\firefox\profiles dir /d /b *Default* >profilename.txt for /f "tokens=1 delims=" %%i in (profilename.txt) do cd %%i del ..\profilename.txt echo user_pref("extensions.checkCompatibility", false); >>user.js echo user_pref("extensions.checkUpdateSecurity", false); >>user.js 之后会怎么样..? |
|
|
2楼#
发布于:2009-08-28 20:20
支持,不走脑子的人多,要不是这样一键化 怎么说他们也不理解
回头。。咱们可以来着 bat 大集合 btw 前面是不是加上一句 杀了firefox 进程 taskkill /f /im firefo* ping 127.0.0.1 -n 3 >NUL |
|
|
3楼#
发布于:2009-08-28 20:20
zj45499:咳咳.....还是不知道这个能干什么用.. 这就等于关了 firefox 的扩展兼容性检查,可以任意装 版本号不对的扩展了 |
|
|
4楼#
发布于:2009-08-28 20:20
唉?我这里这样直接cd /d %appdata%\mozilla\firefox\profiles\*default*也是可以进入这个目录的。
|
|
5楼#
发布于:2009-08-28 20:20
xxp 这个方法也真不错!
|
|
|
6楼#
发布于:2009-08-28 20:20
没有杀Firefox进程的原因就是想说把脚本写完善一点,能等确定具体的目录里面有parent.lock之后,再kill进程,然后操作user.js。
如果用*default*能进,就是得保证用户只有一个配置文件夹。那么我干脆把脚本写成是非型的,如果能找到parent.lock则处理,找不到,证明用户的配置文件夹比想象的复杂,干脆退出脚本。 下面是修改过的一个版本 @echo off echo DO NOT CLOSE FIREFOX! set current=%cd% cd /d %appdata%\mozilla\firefox\profiles\*default* IF EXIST parent.lock goto doecho echo Sorry I have to quit goto doquit :doecho echo OK this is where I park my car taskkill /f /im firefo* ping 127.0.0.1 -n 3 >NUL echo user_pref("extensions.checkCompatibility", false); >>user.js echo user_pref("extensions.checkUpdateSecurity", false); >>user.js echo File "user.js" processed, start your Firefox again. goto doquit :doquit cd /d %current% echo Good bye! 另外taskkill在Win2000下无效,所以或许还要加入操作系统的判断,不过一般再没有谁用2000了吧。 |
|
|
7楼#
发布于:2009-08-28 20:20
Firefox 在不同的操作系统,配置文件夹的默认路径分别是:
操作系统 文件夹 Windows 9x/Me C:\WINDOWS\Application Data\Mozilla\Firefox\Profiles\xxxxxxxx.default\ Windows 2000/XP/2003 C:\Documents and Settings\[User Name]\Application Data\Mozilla\Firefox\Profiles\xxxxxxxx.default\ Windows Vista C:\Users\[user name]\AppData\Roaming\Mozilla\Firefox\Profiles\xxxxxxxx.default\ Linux ~/.mozilla/firefox/xxxxxxxx.default/ Mac OS X ~/Library/Application Support/Firefox/Profiles/xxxxxxxx.default/ 楼上那个批处理不知道能不能用于Vista,我没有用过Vista。 貌似在windows下可以用ver|find /i 来判断操作系统类型 |
|
8楼#
发布于:2009-08-28 20:20
ver 能显示一条语句,我的是
Microsoft Windows 2000 [Version 5.00.2195] 但后面的管道find /i我这里提示不正确的参数,具体怎么写? 另外Vista/Win7的%appdata%环境变量没有问题。 |
|
|
9楼#
发布于:2009-08-28 20:20
kmc:ver 能显示一条语句,我的是 判断操作系统类型(刚写的,不知道对不对) ver|find /i "2000"&&goto 2000 ver|find /i "xp"&&goto xp goto doquit :2000 echo window 2000 goto doquit :xp echo window xp goto doquit :doquit echo goodbye! 其它的依此类推。。。。 若Vista/Win7的%appdata%环境变量没有问题,你这个批处理对于所有的WINDOWS系统应该都没有问题了。不需要再去判断操作系统类型,批处理BAT只能运行在WINDOWS下面,不能运行在LINUX下面。 |
|
10楼#
发布于:2009-08-28 20:20
kmc说在保证用户只有一个配置文件夹的时候才能用*default*进默认配置文件夹,后来发现%appdata%\mozilla\firefox\profiles.ini文件记录了默认配置文件夹的路径。
默认配置文件在Default=1字符串的上一行记录了,如Path=Profiles/9i0d4njm.test1,于是先进入这个目录查找出来路径Profiles/9i0d4njm.test1,再进入默认配置文件夹,也幸亏cd /d后面跟的路径支持斜杠。 建议将 cd /d %appdata%\mozilla\firefox\profiles\*default*这行替换成 cd /d %appdata%\mozilla\firefox\ for /f "tokens=1 delims=:" %%i in ('findstr /n /c:"Default=1" profiles.ini') do set /a "Row=%%i-2" for /f "skip=%Row% tokens=2 delims==" %%j in (profiles.ini) do (cd /d %%j && goto :continue) :continue 试了一下,应该是成功的,呵呵! |
|
11楼#
发布于:2009-08-28 20:20
谢谢楼上两位,我没弄明白find /i后面要用引号加一个string
另外我开始也想通过profile.ini,因为这样更准确,就是写起来麻烦并且不会写(主要是不知道怎么查找和往回退一行),所以在等玉的出现。 我试了一下代码,里面的是profile.ini不是profiles.ini,如果你试成功的话,难道是在各个系统下这个文件的名字不一样(单数/复数)?那就麻烦了。还就有就是我这里cd /d后面跟正斜杠没有用只有反斜杠行,于是要加一个查找替换。我记得有一个很简单的方法可以得用set来替换的,忘了…… |
|
|
12楼#
发布于:2009-08-28 20:20
我C:\Documents and Settings\Administrator\Application Data\Mozilla\Firefox文件夹里面是profiles.ini
我的操作系统是XP |
|
13楼#
发布于:2009-08-28 20:20
看来是得去判断操作系统了……
|
|
|
14楼#
发布于:2009-08-28 20:20
真麻烦啊!
|
|
上一页
下一页