Python检测USB驱动器,然后分配驱动器号?
问题就在这里。我们有100个外部500gb USB驱动器。每个驱动器将在一年中移动到一个新的位置。自动检测USB驱动器已插入Windows系统,然后分配Z:\驱动器盘符的最佳方法是什么?这些USB驱动器将被插入许多不同的计算机中,这样的脚本Python检测USB驱动器,然后分配驱动器号?,python,windows,Python,Windows,问题就在这里。我们有100个外部500gb USB驱动器。每个驱动器将在一年中移动到一个新的位置。自动检测USB驱动器已插入Windows系统,然后分配Z:\驱动器盘符的最佳方法是什么?这些USB驱动器将被插入许多不同的计算机中,这样的脚本 import subprocess diskpart_data = "z-drive.txt" open (diskpart_data, "w").write (""" select volume F: assign letter=Z """) subp
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驱动器在不同Windows系统上的动态特性,是否很难使用?您可以通过WMI自动检测或使用NTFS进行某种卷装载吗?您可以尝试将该脚本编译为exe,并在运行该脚本的USB密钥中创建一个自动运行文件。然后脚本完成它的事情。
对于Z:\字母的分配,我建议使用Win32Com(尽管我不知道它是否能处理这个问题)或使用ctypes,这将使您能够控制windows DLL。正如terabytest所说,您可以从驱动器根目录中的autorun.inf运行脚本。就个人而言,我会使用批处理脚本:
(echo select volume %~d0 && echo assign letter=Z) | diskpart
%~d0
检索当前执行的批处理文件的驱动器号
如果这还不够,有一种方法可以在使用Windows API插入可移动驱动器时通知您。您必须首先使用注册通知,然后在事件循环中处理消息。不幸的是,这需要一个事件循环,我不知道如何在python中轻松创建一个事件循环(除了从头开始创建:是一个示例消息循环,请注意,在您的情况下,不需要创建窗口,只需要创建一个消息循环).如果Z:驱动器已在其插入的计算机上使用,您希望发生什么?脚本需要在驱动器上还是在其插入的每台windows计算机上?@Jim B我们选择Z:\驱动器,因为它未在当前环境中使用。客户端还将提前知道,在运行此脚本时,不会映射z:\驱动器@slurdge我们得到一个USB驱动器,运行一个不同的python脚本,将6000个视频移动到一个视频目录。然后我们使用访问模块在报告中创建超链接,引用这些视频。因此,映射z:\videos\可以全面使用,并且不会破坏报告中的链接。