@echo on
set choice=
:D
if exist D: (set choice=D:) if exist (choice=D:) goto copyG else goto E
:E
if exist E: (set choice=E:) if exist (choice=E:) goto copyG else goto F
:F
if exist F: (set choice=F:) if exist (choice=F:) goto copyG else goto H
:H
if exist H: (set choice=H:) if exist (choice=H:) goto copyG
:copyG
xcopy /e /y G:\2019-Year10\*.* "%choice%"
pause
:removed
echo removed
这是我目前的代码。但是不是从G驱动器将文件复制到USB。
有没有办法来解决这个问题?
编辑:
谢谢它最终工作我用这个
@echo off
echo.
echo Finding Drive to copy work from "G:\2019-Year10"
echo.
for %%i in (D: E: F: H:) do (
if exist %%i set drive=%%i
)
xcopy /e /y "G:\2019-Year10\*.*" "%drive%\2019-Year10\"
echo.
echo Files coped to "%drive%"
echo.
echo.
echo Remove %drive% Drive
:removle_of_drive
if exist %drive% (goto removle_of_drive) else exit
它知道你什么时候取出USB并关闭批处理文件,并通过帮助提供更多关于它正在做什么的信息:Gerhard Barnard
所以在这里我们可以使用wmic
来确定磁盘类型。注意!!!如果您连接了多个USB,则无法按预期执行:
@echo off
for /F "tokens=1-4" %%a in ('wmic logicaldisk get caption^,description^,drivetype 2^>nul') do (
if %%l equ 2 (
echo xcopy /e /y "G:\2019-Year10\*.*" "%%d"
)
)
pause
另请注意我将echo
添加到xcopy
行来模拟命令,只有删除echo才能执行ACTUAL xcopy
命令,一旦你满意它会做你想要的。
但基本上要告诉你应该如何选择(根据你的例子):
CHOICE /C DEFH /M "Choose driveletter "
if errorlevel 4 set "Drive=H:"
if errorlevel 3 set "Drive=F:"
if errorlevel 2 set "Drive=E:"
if errorlevel 1 set "Drive=D:"
echo xcopy /e /y "G:\2019-Year10\*.*" "%Drive%\"
或者根据你知道的驱动器号自动化它,而不是像第一个例子那样检测它(根据你的例子)
@echo off
for %%i in (D: E: F: H:) do (
if exist %%i echo xcopy /e /y "G:\2019-Year10\*.*" "%%i\"
)