2016-08-05 78 views
0

我有一個使用兩臺服務器運行的網站(A和B)。它顯示來自MSSQL的報告。這些服務器都是Windows 2012 R2。我創建了一個.bat文件,用於將網站文件從一臺服務器(B)複製到另一臺(A),以便我可以一起更新它們。我只手動更新服務器B上的網站的文件。在服務器B上執行的bat腳本無法連接到服務器A以複製文件

我可以在我的計算機上或直接在任一服務器上運行.bat文件,它可以正常工作,所有文件都從B複製到A.以下是.bat文件:

rem echo off 

SET source="D:\WebContent\engsys.corp.ftr.com" 
SET source2="\\MAFINFWWWPV02\D$\WebContent\engsys.corp.ftr.com" 
SET dest1="\\MAFINFWWWPV01\engsys.corp.ftr.com" 

xcopy %source% %dest1% /E /Y 

rem xcopy %source2% %dest1% /E /Y 

echo #%username%@%computername% 

我正在使用變量,以便我可以快速切換它們以進行測試。

我在我的網頁上創建了一個按鈕,這樣我就可以點擊按鈕,它會運行.bat文件。但是,當我使用按鈕運行它時,它不會複製這些文件。在該網站,當我點擊按鈕,這就是所謂的:system('cmd /c ' . $script);然後在網頁上會顯示

無效驅動器規格0文件(縣)複製

如果我改變目的地C:\Temp則運行良好並將文件複製到運行腳本的服務器上的文件夾。如果我將它更改爲Z:\,那麼我會得到與運行原始文件相同的錯誤。 Z:\是我放在其他服務器(A)上的映射驅動器B.

我知道服務器可以互相通話,因爲我已經將驅動器從一臺服務器映射到另一臺服務器,存儲文件,以便每臺服務器都有映射的驅動器到其他服務器的網站文件(Z:\)。我原以爲我可以用它作爲目的地。這只是給出了不是有效驅動器的相同錯誤。

由於我不是唯一的管理員將使用該網站,我真的需要這個按鈕的工作。我們中有2人可能會更新這些文件,但我們有一個團隊可能需要我們管理員頁面來更新某些內容,然後需要使用該按鈕以確保他們被複制到兩臺服務器上。

編輯

我註釋掉echo off這裏的運行.bat文件的結果。我確實格式化了它,這不僅僅是一個長字符串。從服務器,而不使用該網站運行時

>rem echo off 
>SET source="D:\WebContent\engsys.corp.ftr.com" 
>SET source2="\\MAFINFWWWPV02\D$\WebContent\engsys.corp.ftr.com" 
>SET dest1="\\MAFINFWWWPV01\engsys.corp.ftr.com" 
>xcopy "D:\WebContent\engsys.corp.ftr.com" "\\MAFINFWWWPV01\engsys.corp.ftr.com" /E /Y Invalid drive specification 0 File(s) copied 
>rem xcopy "\\MAFINFWWWPV02\D$\WebContent\engsys.corp.ftr.com" "\\MAFINFWWWPV01\engsys.corp.ftr.com" /E /Y 
>rem pause 
>echo #[email protected] #[email protected] 

用戶名計算機名稱:

#[email protected] 

回答

1

這裏是最後的工作:

這是在PHP文件:

case 'CopyFiles': 
$script = chr(92) . chr(92) . 'MAFINFWWWPV02\D$\WebContent\engsys.corp.ftr.com\BatchFiles\CopyFiles.bat'; 
system('cmd /c ' . $script); echo " <br>"; 
GetCommand(!NULL); 
break; 

這是.bat文件:

echo off 

SET source2="\\MAFINFWWWPV02\engsys.corp.ftr.com" 

START /wait NET USE L: "\\MAFINFWWWPV01\engsys.corp.ftr.com" Password /user:corp\mmm976 

xcopy %source2% L: /E /Y /Q 

NET USE L: /DELETE 

將bat文件映射到共享驅動器之後,我能夠使用它來複制文件。我不知道爲什麼這個工作時,我以前的位置映射,它沒有工作,但現在。

+0

我試過了,UNC路徑,允許服務桌面訪問,服務爲管理員,沒有任何工作。使用'淨使用'在批處理文件中創建驅動器完美無瑕。謝謝 – ChrisAdmin

+0

@ChrisAdmin很高興幫助,這是一個讓我工作的重大痛苦,直到我發現了一點點。 – Mike

0

Z應該在指向一個UNC路徑。

除非需要cd,否則不應該依賴驅動器,而應使用UNC路徑。 UNC路徑有更好的機會被所有機器看到。根據會話的不同,驅動器可能已安裝,也可能尚未安裝。

類型net use | find "Z"

你會看到其中Z安裝,例如:\\foo\bar

通過\\foo\bar\腳本中的替換Z:\

在你的情況(上MAFINFWWWPV02運行):

xcopy D:\WebContent\engsys.corp.ftr.com "\\MAFINFWWWPV01\engsys.corp.ftr.com" /E /Y 

(你是因爲源的獲取無效驅動器太)

+0

我試過了。我用'net use |的結果替換了'Z:\'找到我在映射過的服務器上運行的「Z」。我仍然收到'無效的驅動器規格0複製文件'。它成爲'\\ ServerName \ ShareName' – Mike

+0

'\\ MAFINFWWWPV01 \ engsys.corp.ftr.com'是結果。 – Mike

+0

如果沒有驅動器,它不能發出'無效驅動器'。你能設置'echo on'併發布腳本的輸出嗎? –

相關問題