Нужен код командного файла для замены filepath на букву диска CD-ROM - PullRequest
2 голосов
/ 08 июня 2010

Вот оператор копирования, который у меня есть в настоящее время.

Я собираюсь заменить F: на% cdrom%, чтобы этот скрипт работал независимо от того, на каком компьютере он используется.

XCOPY F:\*.* .\disk2\ /C /S /D /Y /I

Ответы [ 2 ]

1 голос
/ 11 июня 2010

Я только что собрал следующий маленький скрипт:

@echo off
setlocal enableextensions enabledelayedexpansion
set count=0
for /f "skip=1 tokens=1* delims= " %%x in ('wmic cdrom get drive^,name') do (
    if not [%%y]==[] (
        set /a count+=1
        set drive_!count!=%%x
        set drivename_!count!=%%y
    )
)

if %count%==0 goto error
if %count%==1 set cdrom=%drive_1%
if %count% GTR 1 call :more

if defined ERROR goto :eof

XCOPY %cdrom%\*.* .\disk2\ /C /S /D /Y /I 

goto :eof

:more
set ERROR=
set letters=
echo %count% CD ROM drives found
for /l %%x in (1,1,%count%) do (
    echo.  !drive_%%x! - !drivename_%%x!
    set letters=!letters!!drive_%%x:~0,1!
)
choice /C %letters% /M "Enter the drive letter to copy from" /N
if errorlevel 255 set ERROR=1
if not errorlevel 1 set ERROR=1
set cdrom=!drive_%errorlevel%!
goto :eof

:error
1>&2 echo No CD ROM drive found
goto :eof

Должно быть довольно просто.Я получаю список приводов CD-ROM с wmic и сохраняю их буквы и подписи.Если имеется только один привод CD-ROM, выбор однозначен, поэтому копирование может начаться сразу, в противном случае пользователю будет предложено.

1 голос
/ 08 июня 2010

К сожалению, дисковод компакт-дисков в пакетных файлах обнаружить нелегко. Вы должны использовать некоторые инструменты для этого. Даже если у вас есть какой-либо инструмент, который может успешно определять состояние CD-ROM / жесткого диска / USB, все равно может быть несколько приводов CD-ROM или виртуальных приводов.

Один из самых простых способов сделать это (хотя вы не можете полагаться на это): пытаться скопировать и удалить временный файл в D, E, F, G ..., пока не получите ошибку (это дает вам первый привод только для чтения, который часто является дисководом компакт-дисков).

Вам также следует подумать о том, чтобы попросить пользователя указать букву диска или хотя бы дать ему возможность определить% CDROM%.

Существуют и другие способы обнаружения дисководов компакт-дисков в сети (например, здесь ), но они часто работают только с определенной ОС и используют такие инструменты, как редакторы реестра, поэтому вам следует подумайте об использовании не пакетного решения или дополнительного инструмента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...