2013-06-04 163 views
0

MachineX通過UNC路徑調用批處理文件到MachineA或MachineB,具體取決於服務器故障轉移狀態: 如果一切正常,則批處理通過路徑\\ MachineA \文件\ Batch1.bat。 如果有故障,MachineX知道通過路徑調用的批處理\\到machineB \文件\ Batch1.bat從批處理文件中獲取批處理文件的服務器名稱

無需使用額外的參數,或者竊聽到MachineX如何知道調用哪臺機器,我需要哪臺機器它運行在該批次中知道的,所以它可以在機器上訪問其他文件。爲此,我想將機器名稱存儲在一個變量中。

因爲執行的機器是MachineX,所以我不能使用主機名變量來取出批處理,但由於批處理總是使用完全限定的UNC路徑調用,所以參數%0將在路徑中擁有機器名。由於該系統是一個鏡像安裝的一部分,該批處理文件始終保持相同的,所以硬編碼是不可能的。

什麼是從批處理文件中得到機器名,而不必去外部的最簡單的方法?提前致謝。

編輯: 好吧,我想通了:

for /f "tokens=1,2,3,4,5 delims=\" %%a in ('echo %~p0') do set svrpth=%%a 

這工作得很好,只要有路徑蹤跡,這對於這個目的是可以接受的不超過5個文件夾。

感謝您的幫助。

+0

您可以使用%〜DP0在WinXP + –

+0

%〜dp0會給出完整的路徑,這是一個開始。如果我使用%〜p0,那麼我會得到MachineA \ files \。有沒有辦法從路徑中取出MachineA?有很多用於獲取最後一個記號的答案,我想第一個。 –

回答

0

如果路徑是每臺機器上一樣看起來那麼你可以簡單地從%去除0變量(路徑稱爲腳本) - 還剩下什麼將是機器名