制作批处理文件尝试驱动器D / E / F / H并将其从G复制到它们

问题描述 投票:0回答:1
@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

batch-file usb xcopy drive
1个回答
0
投票

所以在这里我们可以使用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\"
)
© www.soinside.com 2019 - 2024. All rights reserved.