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秒。 |
|
|
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 |
|
17楼#
发布于:2009-08-28 20:20
配置文件的文件名包含中文?这个即使是中文版的Firefox,默认也不会这样吧?其次安装过程中似乎也没有问用户给配置文件起名的这一步,也就是说,除非用户自己知道启动配置文件管理器去新建配置并起中文名,否则这个应该肯定是'default'
|
|
|
18楼#
发布于:2009-08-28 20:20
windows7下的文件也是profiles.ini(复数形式)?还有cd /d直接使用正斜杠也没问题?
|
|
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 |
|
20楼#
发布于:2009-08-28 20:20
win7是复数 正反能进
|
|
|
21楼#
发布于:2009-08-28 20:20
把批处理的文本改为ANSI格式编码。 我用记事本程序编辑批处理的时候,选择另存为,默认的就是ANSI格式编码,怎还不可以处理中文路径???怎样改呢 ![]() |
|
22楼#
发布于:2009-08-28 20:20
我用的notepad++
![]() 我测试了,用UTF-8就打不开中文名的路径,用ANSI就可以。不知道你那里为什么不行。试试我这个文件。 win7是复数 正反能进 就是不知道VISTA是怎么样的了。如果是profile.ini,又不支持cd正斜杠进入目录,还得把正斜杠替换为反斜杠才行。 |
|
|
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 |
|
24楼#
发布于:2009-08-28 20:20
此文太高深了,没有编程基础的人看不太明白,还是走捷径,只要因版本不同不让安装的,那就等着扩展的作者修改成高版本后再安了!
|
|
25楼#
发布于:2009-08-28 20:20
看看你profiles.ini文件的编码格式是不是ANSI。
|
|
26楼#
发布于:2009-08-28 20:20
我的profiles.ini文件的编码格式是UTF-8,默认就是这样的,难道也要改成ANSI么。。。。。。
|
|
27楼#
发布于:2009-08-28 20:20
看来是的了,因为我的profiles.ini默认是ANSI,听说find可以搜索UTF-8的文件,我正在尝试……
算了,听说Windows命令行默认不支持UTF-8。 shenyixin99你真的确定你的profiles.ini默认不是ANSI编码么? |
|
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 拜拜 这样应该可以有更大的适用范围。 |
|
29楼#
发布于:2009-08-28 20:20
我的Profiles一安装FF就有的,确实是UTF-8编码
|
|