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

时间:2015-02-05 16:49:26

标签: batch-file

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

@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会将文件复制到任何已连接的设备,但它只会复制批处理文件夹中的文件。

3 个答案:

答案 0 :(得分:2)

好的,只需插上你的USB密钥并尝试使用此代码,如果这样做了,请告诉我们?

@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

答案 1 :(得分:2)

使用带有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),这里是上面链接中的devicetypes定义,您可以修改wmic命令的语法,只返回您想要的驱动器,如果您需要要返回所有驱动器,只需删除where devicetype^=2

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

希望这会有所帮助。

答案 2 :(得分:0)

我改进了我的最后一个代码以获取所有连接的外部设备 检查它,让我知道这是否后来做了伎俩

@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