批处理脚本,用于删除和替换多个位置的文件

时间:2013-07-25 22:24:15

标签: batch-file vbscript

我要做的是创建一个批处理文件来替换用户应用程序数据文件夹中的teh cert8.db文件,并在其中一个prefs.js文件中插入一行文本。通常这很容易,问题是我的一些用户很有可能有多个firefox配置文件,所以我想有一个脚本来替换firefox / profiles文件夹中的所有cert8.db文件并插入1行在firefox / profiles文件夹中的所有prefs.js文件旁边。

可以这样做吗?如果可能,我愿意使用vb。

2 个答案:

答案 0 :(得分:2)

你可以这样做:

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

替换数据库文件和修改首选项的代码取决于替换数据库的来源以及您希望在首选项中添加或更新的内容。

答案 1 :(得分:0)

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的代码。