2009-11-20 121 views
3

這是問題所在。我們有100多個外部500GB USB驅動器。每個驅動器將在一年中前往新的位置。自動檢測USB驅動器插入Windows系統,然後分配Z:\盤符的最佳方法是什麼?這些USB驅動器將被插入到許多不同的電腦讓喜歡本Python檢測USB驅動器,然後分配驅動器號?

import subprocess 

diskpart_data = "z-drive.txt" 
open (diskpart_data, "w").write (""" 
select volume F: 
assign letter=Z 
""") 
subprocess.call ('diskpart /s %s' % diskpart_data) 

腳本是很難由於使用在不同的Windows系統上的移動USB驅動器的所有時間的動態性質?您可以通過WMI自動檢測或者使用NTFS進行某種卷裝入?

+0

如果Z:驅動器已插入正在使用的機器中,您會發生什麼? – 2009-11-20 15:46:12

+0

腳本需要在驅動器上還是在每個插入的Windows計算機上? – slurdge 2009-11-20 15:55:31

+0

@Jim B 我們選擇Z:\驅動器,因爲它並未在當前實施該環境的環境中使用。客戶端還會提前知道在運行此腳本時不會映射z:\驅動器。 @slurdge 我們得到一個USB驅動器,運行一個不同的python腳本,將6,000個視頻移動到視頻目錄。然後我們使用訪問模塊在報告中創建超鏈接,並參考這些視頻。因此,可以全面使用映射z:\ videos \ ,並且不會中斷報告中的鏈接。 – Dunwitch 2009-11-20 17:22:20

回答

2

as terabytest said,you may run a script from a autorun.inf in the drive of the drive。就個人而言,我會做一個批處理腳本:

(echo select volume %~d0 && echo assign letter=Z) | diskpart 

%~d0檢索當前正在執行的批處理文件的驅動器號。

如果這還不夠,有一種通過使用Windows API的device management functions插入可移動驅動器時被通知的方法。您必須首先使用RegisterDeviceNotification()註冊通知,然後在事件循環中處理WM_DEVICECHANGE消息。不幸的是,這需要一個事件循環,我不知道如何在python中輕鬆創建一個(除了從頭開始創建它):here是一個示例消息循環,請注意,在你的情況下,你不需要創建一個窗口,只有一個消息循環)。

1

您可以嘗試將該腳本編譯爲exe文件,並在運行腳本的USB密鑰中創建自動運行文件。然後腳本完成它的事情。 對於分配Z:\字母的事情,我建議使用Win32Com(即使我不知道它是否可以處理這個問題),或者使用ctypes,這會讓你控制windows dll。

相關問題