Есть много разных способов сделать это, используя choice
или set /p
Один из способов - просто использовать goto, основываясь на уровне ошибки, установленном choice
в выбранном случае, мыпросто используйте буквы C
и D
, и ввод не требуется, если вы нажмете C
или D
на клавиатуре, вы выполните команду выбора.
@echo off
echo select the drive where the file should exist..
choice /C CD
if %errorlevel%==2 call goto :ddrive
if %errorlevel%==1 call goto :cdrive
:cdrive
if exist "c:\filename.txt" (xcopy /y "c:\filename.txt" /y "c:\filename2.txt") else (echo C:\filename.txt does not exist)
goto :EOF
:ddrive
if exist "d:\filename.txt" (xcopy /y "d:\filename.txt" "d:\filename2.txt") else (echo D:\filename.txt does not exist)
echo finished.
pause
Видя, как выесть только 2 варианта, второй, если можно исключить, но я оставил его, потому что вы можете добавить больше дисков.
Чтобы получить справку по каждому из них, откройте cmd.exe
и ru choice /?
, set /?
и, если хотите, if /?
На основе вашего комментария, если вы хотите включитьполный путь в вашем приглашении, то есть в приглашении вы должны ввести букву диска и путь, по которому, как вы думаете, существует файл.т.е. c:\some dir
:
@echo off
set /p "source=Please enter path to search file :"
set /p "dest=Please enter path to copy file to :"
if exist "%source%\filename.txt" (xcopy /y "%source%\filename.txt" /y "%dest%\filename2.txt") else (echo C:\filename.txt does not exist)
echo finished.
pause
, если вы хотите найти файл, вам нужно будет использовать dir /a-d /b /s filename.txt
и установить его в качестве переменной.