使批处理文件尝试 Drives D/E/F/H 并将其从 G 复制到它们

Make Batch file try Drives D/E/F/H and have it copy from G to them

@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:19-Year10\*.* "%choice%"
pause
:removed
echo removed

这是我当前的代码。 但是并没有将文件从G盘复制到U盘。

有办法解决这个问题吗?

编辑:

谢谢,终于成功了,我用了这个

@echo off

echo.
echo Finding Drive to copy work from "G:19-Year10"

echo.
for %%i in (D: E: F: H:) do (
    if exist %%i set drive=%%i
)
xcopy /e /y "G:19-Year10\*.*"  "%drive%19-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:19-Year10\*.*" "%%d"
     )
)
pause

另外注意我在xcopy行添加了echo来模拟命令,只去掉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:19-Year10\*.*" "%Drive%\"

或者根据您知道的驱动器盘符自动执行它,而不是像第一个示例那样检测它(根据您的示例)

@echo off
for %%i in (D: E: F: H:) do (
    if exist %%i echo xcopy /e /y "G:19-Year10\*.*" "%%i\"
)