我想创建一个批处理文件,将外部设备上的文件复制到特定文件夹中,但我希望它可以从所有外部设备复制,而不必为每个设备定义一个字母变量。 这是我的两个选择:
@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
会将文件复制到任何已连接的设备,但它只会复制批处理文件夹中的文件。
答案 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
希望这会有所帮助。
答案 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