首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >您是否可以自动检查是否有批量移动硬盘?

您是否可以自动检查是否有批量移动硬盘?
EN

Stack Overflow用户
提问于 2019-12-25 21:57:56
回答 3查看 173关注 0票数 2

我想写一个批量的程序,它可以识别你是否插入了U盘,然后自动复制一个文件夹。复制很容易,但我很难识别U盘。

我已经这样做了,但是如果U盘有另一个字母,并且字母"E“上有一个硬盘驱动器,那该怎么办?此外,它仅每2分钟检查一次。如果程序能立即识别U盘就好了。

我尝试过的代码如下:

代码语言:javascript
运行
复制
@echo off
goto search
:search
IF EXIST E: GOTO E
timeout /T 120 /nobreak
goto search
:F
xcopy /s F:\test\*.* C:\Users\sebas\Desktop\copied\*.*
exit
EN

回答 3

Stack Overflow用户

发布于 2019-12-26 01:27:29

USB驱动器是可移动磁盘,如下所示:

代码语言:javascript
运行
复制
Prompt>wmic logicaldisk get DeviceID, Description
Description       DeviceID
Local Fixed Disk  C:
Removable Disk    D:
CD-ROM Disc       E:
Removable Disk    F:
票数 0
EN

Stack Overflow用户

发布于 2019-12-26 01:35:10

您可以使用以下命令精确地获取可移动磁盘:

代码语言:javascript
运行
复制
wmic logicaldisk get deviceid, description | find "Removable"
票数 0
EN

Stack Overflow用户

发布于 2019-12-26 12:32:04

使用提供的链接标记,这就是如何将驱动程序存储到文本文件中,然后启动批处理程序。

在批处理中包含一些代码,以恢复驱动器号并将其应用于变量:

代码语言:javascript
运行
复制
<StoreDriveLeterFilepath.txt (
Set /p Drive_Letter=
)

调整XCOPY行以使用该变量。

代码语言:javascript
运行
复制
xcopy /s %Drive_Letter%\test\*.* C:\Users\sebas\Desktop\copied\*.*

修改vbs代码,将驱动器存储到.txt并启动批处理程序。在指定的位置插入批次的文件路径

代码语言:javascript
运行
复制
strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2") 
Set evtDevice = objWMIService.ExecNotificationQuery ("SELECT * FROM Win32_VolumeChangeEvent")

Wscript.Echo "Waiting for events ..."
Do
    Set objReceivedEvent = evtDevice.NextEvent
    'report an event
    Wscript.Echo " Win32_Device Changed event occurred" & VBNewLine
    If objReceivedEvent.EventType = 1 Then 
         Wscript.Echo "Type = Config Changed" 
    ElseIf objReceivedEvent.EventType = 2 Then 
         Wscript.Echo "Type = Device Arrived" 

         Set colItems = objWMIService.ExecQuery("Select * From Win32_Volume")
         For Each objItem in colItems
               If objitem.DriveType = 2 then
                        Wscript.Echo objItem.DriveType & " " & objItem.Name & " " & objItem.driveletter

            Dim objFSO 'File System Object
            Set objFSO = CreateObject("Scripting.FileSystemObject")
            Dim objTS 'Text Stream Object
            Const ForWriting = 2
            Set objTS = objFSO.OpenTextFile("StoreDriveLeterFilepath.txt", ForWriting, True)
            objTS.Write ("objItem.driveletter")
            objTS.Close()
            Set bjFSO = Nothing 'Destroy the object.
            Set objTS = Nothing 'Destroy the object.
            set WshShell=createobject("wscript.shell") 
            WshShell.run "Your Batch Filepath Here.bat", 1, true


               End If
        Next


    ElseIf objReceivedEvent.EventType = 3 Then 
         Wscript.Echo "Type = Device Left" 
    ElseIf objReceivedEvent.EventType = 4 Then 
         Wscript.Echo "Type = Computer Docked" 
    End If
Loop
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59479088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档