Batch file 如何从批处理脚本启动access数据库文件?

Batch file 如何从批处理脚本启动access数据库文件?,batch-file,Batch File,我有十几个用户都访问同一个access数据库,这使得更新很痛苦,因为当我更新文件时,他们都必须注销。为了解决这个问题,我想让他们使用一个简单的启动器,如下所示: DatabaseLauncher.bat start Z:\AccessDatabases\SharedAccessFile-version1.accde 然后,我将在launcher中更新版本,以便用户可以关闭数据库并在空闲时打开它以获得新功能 运行脚本会产生以下错误:进程无法访问该文件,因为另一个进程正在使用该文件。 从命令行运

我有十几个用户都访问同一个access数据库,这使得更新很痛苦,因为当我更新文件时,他们都必须注销。为了解决这个问题,我想让他们使用一个简单的启动器,如下所示:

DatabaseLauncher.bat

start Z:\AccessDatabases\SharedAccessFile-version1.accde
然后,我将在launcher中更新版本,以便用户可以关闭数据库并在空闲时打开它以获得新功能

运行脚本会产生以下错误:
进程无法访问该文件,因为另一个进程正在使用该文件。


从命令行运行命令非常有效。

以下是解决此问题的脚本,以及一些用于处理不同用户机器上的多版本Access的增强功能:

if exist "C:\Program Files\Access2007\Office12\MSACCESS.EXE" (
    Start "" "C:\Program Files\Access2007\Office12\MSACCESS.EXE" "Z:\AccessDataBases\SharedAccessFile-version1.accde"
) else (
    if exist "C:\Program Files\Microsoft Office\Office12\MSACCESS.EXE" (
        Start "" "C:\Program Files\Microsoft Office\Office12\MSACCESS.EXE" "Z:\AccessDataBases\SharedAccessFile-version1.accde"
    ) else (
        Start "" "C:\Program Files (x86)\Microsoft Office\Office12\MSACCESS.EXE" "Z:\AccessDataBases\SharedAccessFile-version1.accde"
    )
)

下面是我在.vbs脚本中使用的代码,用于在注册表中搜索指定的程序,如果找到,则运行该程序,如果没有,则显示消息。它是从各种公共来源拼凑而成的

它可以展开以启动指定的数据库,并使用诸如/x之类的参数来运行指定的宏

dim objShell, WshShell, ProgToFind
Set objShell = CreateObject("WScript.Shell")

Set WshShell = WScript.CreateObject("WScript.Shell")

On Error Resume Next

ProgToFind = "MSACCESS.EXE"

AppPath = WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\" & ProgToFind & "\")

    If Len(AppPath) = 0 Then
        WScript.Echo "App Not Found"
        WScript.Quit
        End If

CommandStr = Chr(34) & AppPath & Chr(34)    'Enclose the AppPath in double quotes

objShell.run CommandStr    'Execute the command string

在直接启动应用程序时,我更希望Windows根据文件选择应用程序。i、 e.不是这个“C:\Program Files\…\MSACCESS.EXE”愚蠢的问题,但在运行脚本时是否打开了它?还有其他人可以使用它吗?检查Z:\AccessDatabases中的锁文件。十几个用户访问该文件并同时使用它。此错误仅在使用批处理文件中的
start
命令时发生。