Да, это может быть сделано с помощью PowerShell или пакетный файл сценария (cmd
тег, кажется, подразумевает ОС Windows).
Выберете последнее. Следующий batch-file
фрагмент кода будет делать то же самое, что и команда в вопросе: XCOPY G:*.BMP X:\ /h/i/c/k/e/y/r/d
:
set "DriveIn=G"
set "DriveOu=X"
XCOPY %DriveIn%:*.BMP %DriveOu%:\ /h/i/c/k/e/y/r/d
Вместо жестко DriveIn
и DriveOu
, вы можете prompt for user input:
set /P "DriveIn=please choose SOURCE drive letter "
set /P "DriveOu=please choose TARGET drive letter "
XCOPY %DriveIn%:*.BMP %DriveOu%:\ /h/i/c/k/e/y/r/d
Советы для (необходимо) проверки действительности:
:dfromscratch
set "DriveIn="
set "DriveOu="
:dsource
set /P "DriveIn=please choose SOURCE drive letter "
rem basic validity check
if not defined DriveIn goto :dsource
if not exist "%DriveIn%:\" goto :dsource
:dtarget
set /P "DriveOu=please choose TARGET drive letter "
rem basic validity check
if not defined DriveOu goto :dtarget
if not exist "%DriveOu%:\" goto :dtarget
if /I "%DriveIn%"=="%DriveOu%" goto :dfromscratch
rem involve more validity check here!!!
XCOPY %DriveIn%:*.BMP %DriveOu%:\ /h/i/c/k/e/y/r/d
Некоторые подсказки для (больше) проверки действительности.
Чтобы показать доступные диски:
wmic logicaldisk get Description, DeviceID, DriveType, FileSystem, VolumeName
Чтобы получить список доступных дисков, используйте for /F
loop (обратите внимание %%G
в пакетном сценарии):
for /F %%G in ('
wmic logicaldisk where "DriveType != 5" get DeviceID^, DriveType^|find ":"
') do echo %%G
или рядом Oneliner (обратите внимание %G
в cmd
): копия & паста в открытый cmd
окно:
for /F %G in ('wmic logicaldisk where "DriveType != 5" get DeviceID^, DriveType^|find ":"') do @echo %G
Другой подход (только проект, нуждается в большем количестве разработки): создание списка доступных букв %drives%
дисков и использовать choice
command вместо set /P
:
set "drives=GX"
choice /C %drives% /M "Select SOURCE drive letter"
пожалуйста, проверьте ваш вопрос, как я редактировал после; если я что-то изменил неправильно, пожалуйста, [edit] (http://stackoverflow.com/posts/40754076/edit) сообщение снова ... – aschipfl