2017-01-12 40 views
0

我想創建一個批處理文件,將Access 2016前端複製到桌面上。我試圖理解下面的例子:批量文件分發訪問前端

@echo Please wait while the version of the database you requested is updated to your desktop. 
    @echo off 
    @echo %username% 
    if not EXIST "C:\MyApplication\Profiles\%username%" GoTo LocalFileFolderWasNotThere 
    xcopy /Q /Y "\\MySharePath\MyNetworkFolder\Admin\MyDivision\MyApplication\MyApplication_JohnGault.accdb" "C:\MyApplication\Profiles\%username%\*.*" 
    REM TYPE NUL | choice /c:delay /td,5 >NUL 
    Start /max "C:\Program Files (x86)\Microsoft Office\OFFICE15\MSACCESS.EXE" "\\MySharePath\MyNetworkFolder\Admin\MyDivision\MyApplication\Profiles\%username%\MyApplication_JohnGault.accdb" 
    exit 
    :LocalFileFolderWasNotThere 
    @echo Creating You A New Profile 
    MD "C:\MyApplication\Profiles\%username%" 
    xcopy /Q /Y "\\MySharePath\MyNetworkFolder\Admin\MyDivision\MyApplication\REgulatory_JohnGault.accdb" "C:\MyApplication\Profiles\%username%\*.*" 
REM TYPE NUL | choice /c:delay /td,5 >NUL 
Start /max "C:\Program Files (x86)\Microsoft Office\OFFICE15\MSACCESS.EXE" "C:\MyApplication\Profiles\%username%\REgulatory_JohnGault.accdb" 
exit 

有人能解釋一下在下一步中完成什麼嗎?

REM TYPE NUL | choice /c:delay /td,5 >NUL 

    Start /max "C:\Program Files (x86)\Microsoft Office\OFFICE15\MSACCESS.EXE" "\\MySharePath\MyNetworkFolder\Admin\MyDivision\MyApplication\Profiles\%username%\MyApplication_JohnGault.accdb" 
    exit 

代碼指的是應用程序的前端/後端嗎?我認爲

\\MySharePath\MyNetworkFolder\Admin\MyDivision\MyApplication\MyApplication_JohnGault.accdb

被引用的前端,不是嗎?

如果有人能解釋每一步發生了什麼,將不勝感激。

謝謝。

+0

沒有直接回答,而是備用和健壯的方法:[將Access 2007數據庫與SQL後端部署到Citrix for multiple users](http://stackoverflow.com/questions/34097886/deploy-access-2007-database-with-sql-back-end-to - Citrix-for-multiple-users/34150736#34150736) – Gustav

回答

1

REM TYPE NUL | choice /c:delay /td,5 >NUL什麼都不做;它只是評論(讀help rem):

d:\bat> rem /? 
Records comments (remarks) in a batch file or CONFIG.SYS. 

REM [comment] 

TYPE NUL | choice /c:delay /td,5 >NUL什麼都不做;它返回錯誤

d:\bat> TYPE NUL | choice /c:delay /t 5 >NUL 
ERROR: Invalid syntax. /T can be specified only when /D is specified. 
Type "CHOICE /?" for usage. 

TYPE NUL | choice /c:delay /d d /t 5 >NUL什麼都不做;雖然它的語法正確則返回錯誤

d:\bat> TYPE NUL | choice /c:delay /d d /t 5 >NUL 

ERROR: The file is either empty or does not contain the valid choices. 

choice /c:delay /d d /t 5 >NUL默默地等待5秒鐘(由/T參數值指定的時間週期),或者直到DELAY被按下。

資源(必讀):

更新回答關於start command問題的另一部分:

啓動程序,命令或批處理腳本(在新窗口中打開。)

語法

START "title" [/D path] [options] "command" [parameters] 

上述語法令牌是,在原來的代碼:

  • START - 視窗cmd內部命令的名稱。
  • "title" - 失蹤,調整如下始終包括TITLE這可以是一個簡單的字符串像"My Script"或只是一對空引號""的。根據Microsoft文檔,標題是可選的,但取決於選擇的其他選項如果省略,則可能會出現問題
  • [/D path] - 可選,正確地省略,
  • [options] - /最大開放MSACCESS.EXE以最大化窗口
  • "command" - 完全合格的路徑MSACCESS.EXE - 確保以下數據庫文件將在MSACCESS.EXE中打開,即使它可能與另一個默認應用程序相關聯,
  • [parameters] - 完全限定的UNC路徑到Access 2007/2010 database file (.accdb type)將使用MSACCESS.EXE打開。

使用以下糾正語法:

Start "" /max "C:\Program Files (x86)\Microsoft Office\OFFICE15\MSACCESS.EXE" "\\MySharePath\MyNetworkFolder\Admin\MyDivision\MyApplication\Profiles\%username%\MyApplication_JohnGault.accdb" 

如果MSACCESS.EXE目前爲.accdb文件類型,那麼下面的命令默認應用程序相關聯應該足夠了:

Start "" /max "\\MySharePath\MyNetworkFolder\Admin\MyDivision\MyApplication\Profiles\%username%\MyApplication_JohnGault.accdb" 
+0

謝謝,請您澄清什麼是'C:\ Program Files文件(x86)\ Microsoft Office \ OFFICE15 \ MSACCESS.EXE「\\ MySharePath \ MyNetworkFolder \ Admin \ MyDivision \ MyApplication \ Profiles \%username%\ MyApplication_JohnGault.accdb'引用,這是後端嗎?爲什麼需要MSACCESS.EXE? – user3781528

+0

@ user3781528答案已更新。 – JosefZ

+0

@ user3781528 - 它只是使用MSACCESS.EXE打開MyApplication_John Gault.accdb並最大化窗口。您需要提供正在打開的文件的完整路徑以及您用來打開它的應用程序。奇怪的是,如果你只是發佈後端,我不知道你爲什麼要打開它。您應該真的在分發桌面快捷方式以與應用程序一起使用,用戶可以在完成下載時打開它。 –