下面几行是我正在运行的批处理脚本,DW_ETL.bat
net use K: /DELETE /yes
net use K: \\SERVEUR-GPAO\Group_share /yes
start "C:\Program Files (x86)\Microsoft Office\root\Office16\MSACCESS.EXE" "K:\BI\Etl\DW_ETL.mdb"
正如您在下图中看到的,访问二进制文件安装在正确的位置,例如C:\Program Files (x86)\Microsoft Office\root\Office16\MSACCESS.exe
然而每次运行脚本时,都会出现以下错误
它说Windows cannot open the file because it did not recognize the type of file
但是当我从 打开 mdb 文件时Access
,它可以打开数据库。
最后一件事,当我在同一台机器上以不同的用户身份运行该脚本时,该脚本可以完美运行。
任何想法都值得欢迎。
答案1
一个问题是 start 使用双引号中的第一个参数作为窗口标题。
请参阅start /?
并使用虚拟空对来规避此问题。
net use K: /DELETE /yes
net use K: \\SERVEUR-GPAO\Group_share /yes
start "" "C:\Program Files (x86)\Microsoft Office\root\Office16\MSACCESS.EXE" "K:\BI\Etl\DW_ETL.mdb"
答案2
重新映射驱动器后,您需要将.mdb 文件与适当的二进制文件重新关联。
https://superuser.com/a/29801/38001是如何通过命令行执行此操作的最佳解释,我不会在这里重复整个答案。
简而言之
FTYPE MyCustomType=C:\Program Files\MyCustomProgram\MyProg.exe "%1"
ASSOC .custom=MyCustomType