2009-11-20 3 views
3

여기에 문제가 있습니다. 우리는 100g의 외부 500GB USB 드라이브를 가지고 있습니다. 각 드라이브는 1 년 내내 새로운 위치로 이동합니다. 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) 

같은 스크립트가 항상 다른 윈도우 시스템에서 모바일 USB 드라이브의 동적 특성 때문에 사용하기 어렵다 그래서 다른 많은 컴퓨터에 연결됩니까? WMI를 통해 자동 검색하거나 NTFS로 볼륨 마운트를 할 수 있습니까?

+0

Z : 드라이브가 이미 연결되어있는 시스템에서 이미 사용 중이면 어떻게 될까요? –

+0

스크립트가 드라이브에 있거나 플러그가 꽂혀있는 모든 Windows 컴퓨터에 있어야합니까? – slurdge

+0

@Jim B Z : \ 드라이브는 이것이 구현 될 현재 환경에서 사용되지 않기 때문에 선택합니다. 클라이언트는이 스크립트를 실행하여 z : \ 드라이브가 매핑되지 않도록 미리 알 수 있습니다. @slurdge 우리는 6,000 개의 비디오를 비디오 디렉토리로 이동시키는 다른 파이썬 스크립트를 실행하여 USB 드라이브를 얻습니다. 그런 다음 액세스 모듈을 사용하여 보고서에서 이러한 비디오를 참조하는 하이퍼 링크를 만듭니다. 따라서 z : \ videos \ 매핑은 전체적으로 사용할 수 있으며 보고서의 링크를 깨뜨리지는 않습니다. – Dunwitch

답변

2

terabytest로 말하면 드라이브의 루트에있는 autorun.inf에서 스크립트를 실행할 수 있습니다. 개인적으로, 나는 배치 스크립트와 함께 할 것입니다 :

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

%~d0은 현재 실행중인 배치 파일의 드라이브 문자를 검색합니다.

이 충분하지 않은 경우 Windows API device management functions을 사용하여 이동식 드라이브를 넣었을 때 알림을받을 수있는 방법이 있습니다. 먼저 RegisterDeviceNotification()을 사용하여 알림을 등록한 다음 이벤트 루프에서 WM_DEVICECHANGE 메시지를 처리해야합니다. 불행하게도 이것은 이벤트 루프가 필요하며, 파이썬에서 어떻게 만들 수 있는지 모르겠습니다. (처음부터 새로 만들지 말고 : here은 예제 메시지 루프입니다. 여러분의 경우에는 창을 만들 필요가 없습니다. 메시지 루프 만 있음).

1

해당 스크립트를 exe로 컴파일하고 스크립트를 실행하는 USB 키에 자동 실행 파일을 만들 수 있습니다. 그런 다음 스크립트가 해당 작업을 수행합니다. Z : \ letter를 지정하는 경우 Win32Com을 사용하는 것이 좋습니다 (비록이 파일을 처리 할 수 ​​있는지 모르겠지만). Windows DLL을 제어 할 수있는 ctypes를 사용하십시오.

관련 문제