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