我要做的是创建一个批处理文件来替换用户应用程序数据文件夹中的 cert8.db 文件,并将一行文本插入其中一个 prefs.js 文件。通常这很容易,问题是我的一些用户很有可能拥有多个 firefox 配置文件,所以我想要一个脚本来替换 firefox/profiles 文件夹中的所有 cert8.db 文件并插入 1 行接下来进入 firefox/profiles 文件夹中的所有 prefs.js 文件。
这可以做到吗?如果可能,我愿意使用 vb。
我要做的是创建一个批处理文件来替换用户应用程序数据文件夹中的 cert8.db 文件,并将一行文本插入其中一个 prefs.js 文件。通常这很容易,问题是我的一些用户很有可能拥有多个 firefox 配置文件,所以我想要一个脚本来替换 firefox/profiles 文件夹中的所有 cert8.db 文件并插入 1 行接下来进入 firefox/profiles 文件夹中的所有 prefs.js 文件。
这可以做到吗?如果可能,我愿意使用 vb。
你可以这样做:
Set fso = CreateObject("Scripting.FileSystemObject")
profilesFolder  = "C:\Users"
firefoxProfiles = "AppData\Roaming\Mozilla\Firefox\Profiles"
For Each fldr In fso.GetFolder(profilesFolder)
  profilePath = fso.BuildPath(fldr.Path, firefoxAppdata)
  If fso.FolderExists(profilePath) Then
    For Each profile In fso.GetFolder(profilePath)
      certdb = fso.BuildPath(profile, "cert8.db")
      prefs  = fso.BuildPath(profile, "prefs.js")
      If fso.FileExists(certdb) Then
        'replace cert8.db
      End If
      If fso.FileExists(prefs) Then
        'modify prefs.js
      End If
    Next
  End If
Next
替换数据库文件和修改首选项的代码取决于替换数据库的来源以及您要在首选项中添加或更新的内容。
FOR /D %%i IN (C:\Users\*.*) Do FOR /D %%j IN (%%i\AppData\Roaming\Mozilla\Firefox\Profiles\*.*) Do (
    CALL :ReplaceDB "%%j\cert8.db"
    CALL :ChangeJS "%%j\prefs.js"
)
:ReplaceDB
IF NOT EXIST %1 GOTO :EOF
MOVE /Y %1 "%~1.old"
COPY C:\firefox\cert8.db %1
GOTO :EOF
:ChangeJS
IF NOT EXIST %1 GOTO :EOF
ECHO user_pref("network.proxy.autoconfig_url", "pac.pe.lan/pac/proxy.pac") >> %1
GOTO :EOF
编辑:添加第二个FOR搜索配置文件。编辑:添加了用于替换 DB 并将行附加到 JS 的代码。