Сделайте пакетный файл попробуйте Диски D / E / F / H и скопируйте его с G на них - PullRequest
0 голосов
/ 28 февраля 2019
@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

Это мой текущий код.Но не копирует ли файлы на USB с диска G.

Есть ли способ это исправить?

Редактировать:

Спасибо, что все заработало в концея использовал это

@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, закрывает пакетный файл и дает вам больше информации о том, что он делает, спасибо за помощь: Герхард Барнард

1 Ответ

0 голосов
/ 28 февраля 2019

Итак, здесь мы можем использовать 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\"
)
...