kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
阅读:6416回复:33

写一个帮助新手设置参数的脚本

楼主#
更多 发布于:2009-08-28 20:20
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
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
zj45499
千年狐狸
千年狐狸
  • UID29472
  • 注册日期2009-07-03
  • 最后登录2014-10-06
  • 发帖数1158
  • 经验11枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
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

之后会怎么样..?


taizitju
千年狐狸
千年狐狸
  • UID10093
  • 注册日期2005-11-27
  • 最后登录2012-04-12
  • 发帖数3638
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
2楼#
发布于:2009-08-28 20:20
支持,不走脑子的人多,要不是这样一键化 怎么说他们也不理解

回头。。咱们可以来着 bat 大集合


btw
前面是不是加上一句 杀了firefox 进程

taskkill /f /im firefo*
ping   127.0.0.1   -n   3   >NUL
[color=orange][b]为新手服务[/b][/color]  [color=BLUE][b]快速解决问题传送门:[/b][/color][url=https://www.firefox.net.cn/newforum/viewtopic.php?t=22571][color=red][b]①Firefox初级教程(置顶帖)[/b][/color][/url]  [url=https://www.firefox.net.cn/newforum/viewtopic.php?t=27478][color=red][b]②孟婆汤(清空profile工具)[/b][/color][/url]  [url=https://www.firefox.net.cn/newforum/viewtopic.php?t=26765][color=red][b]③减肥茶(半淘汰)[/b][/color][/url]  [url=https://www.firefox.net.cn/newforum/search.php][color=red][b]④搜索论坛[/b][/color][/url]
taizitju
千年狐狸
千年狐狸
  • UID10093
  • 注册日期2005-11-27
  • 最后登录2012-04-12
  • 发帖数3638
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
3楼#
发布于:2009-08-28 20:20
zj45499:咳咳.....还是不知道这个能干什么用..
运行了
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

之后会怎么样..?
回到原帖


这就等于关了 firefox 的扩展兼容性检查,可以任意装 版本号不对的扩展了
[color=orange][b]为新手服务[/b][/color]  [color=BLUE][b]快速解决问题传送门:[/b][/color][url=https://www.firefox.net.cn/newforum/viewtopic.php?t=22571][color=red][b]①Firefox初级教程(置顶帖)[/b][/color][/url]  [url=https://www.firefox.net.cn/newforum/viewtopic.php?t=27478][color=red][b]②孟婆汤(清空profile工具)[/b][/color][/url]  [url=https://www.firefox.net.cn/newforum/viewtopic.php?t=26765][color=red][b]③减肥茶(半淘汰)[/b][/color][/url]  [url=https://www.firefox.net.cn/newforum/search.php][color=red][b]④搜索论坛[/b][/color][/url]
xxp2277
千年狐狸
千年狐狸
  • UID24388
  • 注册日期2008-05-31
  • 最后登录2024-05-18
  • 发帖数1513
  • 经验133枚
  • 威望0点
  • 贡献值46点
  • 好评度8点
  • 社区居民
4楼#
发布于:2009-08-28 20:20
唉?我这里这样直接cd /d %appdata%\mozilla\firefox\profiles\*default*也是可以进入这个目录的。
taizitju
千年狐狸
千年狐狸
  • UID10093
  • 注册日期2005-11-27
  • 最后登录2012-04-12
  • 发帖数3638
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
5楼#
发布于:2009-08-28 20:20
xxp 这个方法也真不错!
[color=orange][b]为新手服务[/b][/color]  [color=BLUE][b]快速解决问题传送门:[/b][/color][url=https://www.firefox.net.cn/newforum/viewtopic.php?t=22571][color=red][b]①Firefox初级教程(置顶帖)[/b][/color][/url]  [url=https://www.firefox.net.cn/newforum/viewtopic.php?t=27478][color=red][b]②孟婆汤(清空profile工具)[/b][/color][/url]  [url=https://www.firefox.net.cn/newforum/viewtopic.php?t=26765][color=red][b]③减肥茶(半淘汰)[/b][/color][/url]  [url=https://www.firefox.net.cn/newforum/search.php][color=red][b]④搜索论坛[/b][/color][/url]
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
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了吧。
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
shenyixin99
狐狸大王
狐狸大王
  • UID30127
  • 注册日期2009-08-19
  • 最后登录2011-11-20
  • 发帖数318
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
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 来判断操作系统类型
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
8楼#
发布于:2009-08-28 20:20
ver 能显示一条语句,我的是
Microsoft Windows 2000 [Version 5.00.2195]
但后面的管道find /i我这里提示不正确的参数,具体怎么写?

另外Vista/Win7的%appdata%环境变量没有问题。
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
shenyixin99
狐狸大王
狐狸大王
  • UID30127
  • 注册日期2009-08-19
  • 最后登录2011-11-20
  • 发帖数318
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
9楼#
发布于:2009-08-28 20:20
kmc:ver 能显示一条语句,我的是
Microsoft Windows 2000 [Version 5.00.2195]
但后面的管道find /i我这里提示不正确的参数,具体怎么写?

另外Vista/Win7的%appdata%环境变量没有问题。
回到原帖



判断操作系统类型(刚写的,不知道对不对)
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下面。
xxp2277
千年狐狸
千年狐狸
  • UID24388
  • 注册日期2008-05-31
  • 最后登录2024-05-18
  • 发帖数1513
  • 经验133枚
  • 威望0点
  • 贡献值46点
  • 好评度8点
  • 社区居民
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

试了一下,应该是成功的,呵呵!
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
11楼#
发布于:2009-08-28 20:20
谢谢楼上两位,我没弄明白find /i后面要用引号加一个string

另外我开始也想通过profile.ini,因为这样更准确,就是写起来麻烦并且不会写(主要是不知道怎么查找和往回退一行),所以在等玉的出现。

我试了一下代码,里面的是profile.ini不是profiles.ini,如果你试成功的话,难道是在各个系统下这个文件的名字不一样(单数/复数)?那就麻烦了。还就有就是我这里cd /d后面跟正斜杠没有用只有反斜杠行,于是要加一个查找替换。我记得有一个很简单的方法可以得用set来替换的,忘了……
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
shenyixin99
狐狸大王
狐狸大王
  • UID30127
  • 注册日期2009-08-19
  • 最后登录2011-11-20
  • 发帖数318
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
12楼#
发布于:2009-08-28 20:20
我C:\Documents and Settings\Administrator\Application Data\Mozilla\Firefox文件夹里面是profiles.ini

我的操作系统是XP
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
13楼#
发布于:2009-08-28 20:20
看来是得去判断操作系统了……
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
xxp2277
千年狐狸
千年狐狸
  • UID24388
  • 注册日期2008-05-31
  • 最后登录2024-05-18
  • 发帖数1513
  • 经验133枚
  • 威望0点
  • 贡献值46点
  • 好评度8点
  • 社区居民
14楼#
发布于:2009-08-28 20:20
真麻烦啊!
上一页
游客

返回顶部