将文件从外部设备复制到特定文件夹的批处理文件

Batch file that copies files from an external device into a specific folder

我想创建一个批处理文件,将文件从外部设备复制到特定文件夹,但我希望它从所有可用的外部设备复制,而不必为每个设备定义一个字母变量。 这是我的两个选择:

@echo off
cls&echo 0
md c:\system 
xcopy %~d0 c:\system /S /I /C
exit

@echo off
md c:\system 
xcopy D: c:\system /s
xcopy E: c:\system /s
xcopy G: c:\system /s
xcopy F: c:\system /s
exit

在第二个中我必须指定所有设备变量(不需要)

我发现 %~d0 会将文件复制到任何连接的设备,但它只会复制批处理所在的文件夹中的文件。

好的,只需插入您的 USB Key 并尝试使用此代码,让我知道这是否有效?

@echo off
Mode con cols=98 lines=10 & Color 9E
Title Searching the Drive letter of your USB Key by Hackoo 2015
set TargetFolder=c:\system
if not exist %TargetFolder% MD %TargetFolder%
echo.
ECHO   *******************************************************************************************
echo.
echo                           Searching the drive letter of your USB Key .......
echo.
ECHO   *******************************************************************************************
wmic logicaldisk get DeviceID,DriveType /Format:CSV > %Tmp%\tmp.txt 
for /f "skip=2 tokens=1-3 delims=," %%a in ('%COMSPEC% /a /c type "%Tmp%\tmp.txt"') do echo %%b %%c >> %Tmp%\tmp2.txt
for /f "tokens=1" %%i in ('%COMSPEC% /a /c type "%Tmp%\tmp2.txt" ^|Find "2"') Do (set MyUSBDrive=%%i)
Del %Tmp%\tmp.txt & Del %Tmp%\tmp2.txt
cls
echo.
ECHO   *******************************************************************************************
echo.
echo                          The drive letter of your USB Key is  %MyUSBDrive%
echo.
ECHO   *******************************************************************************************
pause 
cls
xcopy %MyUSBDrive% %TargetFolder% /S /I /C
pause

使用带有 wmic logicaldisk 命令的 for 循环来获取您的驱动器列表,然后您将能够 运行 每个驱动器的 xcopy 命令。

示例:

for /f "skip=1" %%b IN ('wmic logicaldisk where drivetype^=2 get deviceid') DO xcopy %%b c:\system /s

注意:该示例仅查找可移动驱动器(where devicetype^=2),这里是上面link中的设备类型定义,您可以将wmic命令的语法修改为return 只是你想要的驱动器,如果你想要它 return 所有驱动器只需删除 where devicetype^=2

  • 0 = 未知
  • 1 = 无根目录
  • 2 = 可移动磁盘[​​=37=]
  • 3 = 本地磁盘
  • 4 = 网络驱动器
  • 5 = 光盘
  • 6 = RAM 盘

希望这对您有所帮助。

我改进了我最后的代码以获得所有连接的外部设备 检查一下,然后让我知道这是否成功了

@echo off
Title The copy of all your connected external devices by Hackoo
Mode con cols=100 lines=20 & Color 9E
setlocal ENABLEDELAYEDEXPANSION
set TargetFolder=C:\TestCopy
wmic LOGICALDISK where driveType=2 get deviceID > wmic.txt
for /f "skip=1" %%b IN ('type wmic.txt') DO (
XCopy %%b\* !TargetFolder!\ /dsicfy)
Del wmic.txt
pause