kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2024-08-29
  • 发帖数9187
  • 经验398枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
15楼#
发布于:2009-08-28 20:20
OK已经初步完成,目前在中文Windows 7下测试通过
@echo off
echo 请确保Firefox正在运行
pause
set current=%cd%
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
IF EXIST parent.lock goto doecho
echo 没有找到正确的配置文件夹,退出
goto doquit
:doecho
echo 成功找到配置文件
taskkill /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 成功写入"user.js"文件
goto doquit
:doquit
cd /d %current%
echo 拜拜


几点说明:
1. 判断parent.lock实在是出于保险之举,所以要求用户不要关闭Firefox,以确保在正确的配置文件夹下工作。
2. taskkill没有必要用/f参数,否则Firefox是非法退出,相应的等待时间增加到了5秒。
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
shenyixin99
狐狸大王
狐狸大王
  • UID30127
  • 注册日期2009-08-19
  • 最后登录2011-11-20
  • 发帖数318
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
16楼#
发布于:2009-08-28 20:20


将上面所讨论的整理成下面的代码,不过还不太理想。。。
(我没有对操作系统进行判断,而是对profiles.ini和profile.ini进行判断,应该都一样的,呵呵)

@echo off

echo processing, please wait........

cd /d %appdata%\mozilla\firefox\

:: 由于if exist后面只能接一条语句,所以分开成两条处理,不知道有没有办法将两条语句合起来??
if  exist profiles.ini (
for /f "tokens=1 delims=:" %%i in ('findstr /n /c:"Default=1" profiles.ini') do (set /a "Row=%%i-2")
)

:: 如果配置文件的文件名都是英文的话(比如:XXXXXXX.default)可以正确处理;
:: 但是如果配置文件的文件名包含中文(比如:XXXXXXXX.默认配置),则%%j获得的是乱码,处理失败,请各位高手指点一下中文的问题。。。
if exist profiles.ini (
for /f "skip=%Row% tokens=2 delims==" %%j in (profiles.ini) do (cd /d %%j && goto :found)
)

if  exist profile.ini (
for /f "tokens=1 delims=:" %%i in ('findstr /n /c:"Default=1" profile.ini') do (set /a "Row=%%i-2")
)
if exist profile.ini (
for /f "skip=%Row% tokens=2 delims==" %%j in (profile.ini) do (cd /d %%j && goto :found)
)
goto :notfound

:found

::若进程存在则Kill,否则不kill
tasklist /fi "imagename eq firefo*" >NUL | findstr /s /i /m "firefo.*" >NUL && taskkill   /f /im  firefo*  >NUL
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. 
echo ------------------------------------------
echo "succeeded!!!" 
echo ------------------------------------------
goto :exit

:notfound 
echo ------------------------------------------
echo "failed!!!" 
echo ------------------------------------------
goto :exit

:exit
pause
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2024-08-29
  • 发帖数9187
  • 经验398枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
17楼#
发布于:2009-08-28 20:20
配置文件的文件名包含中文?这个即使是中文版的Firefox,默认也不会这样吧?其次安装过程中似乎也没有问用户给配置文件起名的这一步,也就是说,除非用户自己知道启动配置文件管理器去新建配置并起中文名,否则这个应该肯定是'default'
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
xxp2277
千年狐狸
千年狐狸
  • UID24388
  • 注册日期2008-05-31
  • 最后登录2025-06-24
  • 发帖数1513
  • 经验133枚
  • 威望0点
  • 贡献值46点
  • 好评度8点
  • 社区居民
18楼#
发布于:2009-08-28 20:20
windows7下的文件也是profiles.ini(复数形式)?还有cd /d直接使用正斜杠也没问题?
xxp2277
千年狐狸
千年狐狸
  • UID24388
  • 注册日期2008-05-31
  • 最后登录2025-06-24
  • 发帖数1513
  • 经验133枚
  • 威望0点
  • 贡献值46点
  • 好评度8点
  • 社区居民
19楼#
发布于:2009-08-28 20:20
但是如果配置文件的文件名包含中文(比如:XXXXXXXX.默认配置),则%%j获得的是乱码,处理失败

把批处理的文本改为ANSI格式编码。
不知道有没有办法将两条语句合起来

把切换目录的这一部分改进了一下,检测profile(s).ini的存在,不过暂时没有考虑替换正斜杠的情况(至少XP下正斜杠路径也能正常进入,windows7也可以?)。
cd /d %appdata%\mozilla\firefox\
if exist profile.ini (set filename=profile.ini) else (set filename=profiles.ini)
for /f "tokens=1 delims=:" %%i in ('findstr /n /c:"Default=1" %filename%') do set /a "Row=%%i-2"
for /f "skip=%Row% tokens=2 delims==" %%j in (%filename%) do (cd /d %%j && goto :continue)
:continue
smoke
千年狐狸
千年狐狸
  • UID3052
  • 注册日期2005-02-16
  • 最后登录2015-02-01
  • 发帖数2367
  • 经验12枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
20楼#
发布于:2009-08-28 20:20
win7是复数 正反能进
遇到问题请善用论坛搜索功能
shenyixin99
狐狸大王
狐狸大王
  • UID30127
  • 注册日期2009-08-19
  • 最后登录2011-11-20
  • 发帖数318
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
21楼#
发布于:2009-08-28 20:20
把批处理的文本改为ANSI格式编码。


我用记事本程序编辑批处理的时候,选择另存为,默认的就是ANSI格式编码,怎还不可以处理中文路径???怎样改呢 [/quote][/code]
xxp2277
千年狐狸
千年狐狸
  • UID24388
  • 注册日期2008-05-31
  • 最后登录2025-06-24
  • 发帖数1513
  • 经验133枚
  • 威望0点
  • 贡献值46点
  • 好评度8点
  • 社区居民
22楼#
发布于:2009-08-28 20:20
我用的notepad++

我测试了,用UTF-8就打不开中文名的路径,用ANSI就可以。不知道你那里为什么不行。试试我这个文件。
win7是复数 正反能进

就是不知道VISTA是怎么样的了。如果是profile.ini,又不支持cd正斜杠进入目录,还得把正斜杠替换为反斜杠才行。
附件名称/大小 下载次数 最后更新
进入Firefox默认配置文件夹.txt (1KB)  7 2009-08-30 09:23
shenyixin99
狐狸大王
狐狸大王
  • UID30127
  • 注册日期2009-08-19
  • 最后登录2011-11-20
  • 发帖数318
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
23楼#
发布于:2009-08-28 20:20
用楼上的BAT文件还是不行哟。

我用firefox.exe -profilemanager打开配置管理器,然后添加一个配置,在我这里,新添加的配置文件后缀默认的是“配置文件”而不是“default"。Profiles/286yc9h2.default可以正常进入,而在进入“Profiles/2wi3owhf.配置文件”时因为出现中文而进入不了

我的profiles.ini内容如下:

[General]
StartWithLastProfile=1

[Profile0]
Name=default
IsRelative=1
Path=Profiles/286yc9h2.default

[Profile1]
Name=配置文件
IsRelative=1
Path=Profiles/2wi3owhf.配置文件
Default=1
7liesofmlm
小狐狸
小狐狸
  • UID29892
  • 注册日期2009-07-31
  • 最后登录2010-04-07
  • 发帖数28
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
24楼#
发布于:2009-08-28 20:20
此文太高深了,没有编程基础的人看不太明白,还是走捷径,只要因版本不同不让安装的,那就等着扩展的作者修改成高版本后再安了!
暮光迷--中国人气最旺的暮光之城爱好者聚集地!暮光之城2
xxp2277
千年狐狸
千年狐狸
  • UID24388
  • 注册日期2008-05-31
  • 最后登录2025-06-24
  • 发帖数1513
  • 经验133枚
  • 威望0点
  • 贡献值46点
  • 好评度8点
  • 社区居民
25楼#
发布于:2009-08-28 20:20
看看你profiles.ini文件的编码格式是不是ANSI。
shenyixin99
狐狸大王
狐狸大王
  • UID30127
  • 注册日期2009-08-19
  • 最后登录2011-11-20
  • 发帖数318
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
26楼#
发布于:2009-08-28 20:20
我的profiles.ini文件的编码格式是UTF-8,默认就是这样的,难道也要改成ANSI么。。。。。。
xxp2277
千年狐狸
千年狐狸
  • UID24388
  • 注册日期2008-05-31
  • 最后登录2025-06-24
  • 发帖数1513
  • 经验133枚
  • 威望0点
  • 贡献值46点
  • 好评度8点
  • 社区居民
27楼#
发布于:2009-08-28 20:20
看来是的了,因为我的profiles.ini默认是ANSI,听说find可以搜索UTF-8的文件,我正在尝试……
算了,听说Windows命令行默认不支持UTF-8。
shenyixin99你真的确定你的profiles.ini默认不是ANSI编码么?
xxp2277
千年狐狸
千年狐狸
  • UID24388
  • 注册日期2008-05-31
  • 最后登录2025-06-24
  • 发帖数1513
  • 经验133枚
  • 威望0点
  • 贡献值46点
  • 好评度8点
  • 社区居民
28楼#
发布于:2009-08-28 20:20
感谢Kmc的提醒,找到了替换的比较简单的办法。
现在考虑了profile(s).ini单复数的问题,以及cd /c不支持正斜杠的问题。shenyixin99的关于profiles.ini文件是UTF-8编码的问题不知道怎么办。
@echo off
echo 请确保Firefox正在运行
pause
set current=%cd% 
cd /d %appdata%\mozilla\firefox\
if exist profile.ini (set filename=profile.ini) else (set filename=profiles.ini)
for /f "tokens=1 delims=:" %%i in ('findstr /n /c:"Default=1" %filename%') do set /a "Row=%%i-2"
for /f "skip=%Row% tokens=2 delims==" %%j in (%filename%) do (
			setlocal enabledelayedexpansion
			set "pathstr=%%j"
			set pathstr=!pathstr:/=\!
			cd /d !pathstr!
			goto :continue
		)
:continue
IF EXIST parent.lock goto doecho
echo 没有找到正确的配置文件夹,退出
goto doquit
:doecho
echo 成功找到配置文件
taskkill /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 成功写入"user.js"文件
goto doquit
:doquit
cd /d %current%
echo 拜拜

这样应该可以有更大的适用范围。
shenyixin99
狐狸大王
狐狸大王
  • UID30127
  • 注册日期2009-08-19
  • 最后登录2011-11-20
  • 发帖数318
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
29楼#
发布于:2009-08-28 20:20
我的Profiles一安装FF就有的,确实是UTF-8编码
游客

返回顶部