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