我想写一个批量的程序,它可以识别你是否插入了U盘,然后自动复制一个文件夹。复制很容易,但我很难识别U盘。
我已经这样做了,但是如果U盘有另一个字母,并且字母"E“上有一个硬盘驱动器,那该怎么办?此外,它仅每2分钟检查一次。如果程序能立即识别U盘就好了。
我尝试过的代码如下:
@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
发布于 2019-12-26 01:27:29
USB驱动器是可移动磁盘,如下所示:
Prompt>wmic logicaldisk get DeviceID, Description
Description DeviceID
Local Fixed Disk C:
Removable Disk D:
CD-ROM Disc E:
Removable Disk F:
发布于 2019-12-26 01:35:10
您可以使用以下命令精确地获取可移动磁盘:
wmic logicaldisk get deviceid, description | find "Removable"
发布于 2019-12-26 12:32:04
使用提供的链接标记,这就是如何将驱动程序存储到文本文件中,然后启动批处理程序。
在批处理中包含一些代码,以恢复驱动器号并将其应用于变量:
<StoreDriveLeterFilepath.txt (
Set /p Drive_Letter=
)
调整XCOPY行以使用该变量。
xcopy /s %Drive_Letter%\test\*.* C:\Users\sebas\Desktop\copied\*.*
修改vbs代码,将驱动器存储到.txt并启动批处理程序。在指定的位置插入批次的文件路径
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
https://stackoverflow.com/questions/59479088
复制相似问题