2016-11-23 1 views
0

То, что я пытаюсь сделать, это резервное копирование команд cmd, но проблема в том, что я беру резервную копию USB на другой компьютер для резервного копирования имен дисков.Ввод дисков для резервного копирования с помощью клавиатуры

Например, когда я делаю:

XCOPY G:\*.BMP X:\ /h/i/c/k/e/y/r/d 

В другом компьютере диски не будут G и X.

Что я хочу сделать, это если можно сделать программу, которую я могу ввести с клавиатуры, какой диск я хочу сделать резервным и на какой диск.

Например:

XCOPY "driver name keyboard input":\*.BMP "driver name keyboard input":/" /h/i/c/k/e/y/r/d 
+0

пожалуйста, проверьте ваш вопрос, как я редактировал после; если я что-то изменил неправильно, пожалуйста, [edit] (http://stackoverflow.com/posts/40754076/edit) сообщение снова ... – aschipfl

ответ

0

Да, это может быть сделано с помощью 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" 
+0

чувак ур awsome. –