2012-12-05 3 views
2

Я пытаюсь написать командный файл, который в основном используется для копирования мест назначения. Теперь я хочу сделать это там, где другие люди могут его использовать, без необходимости входить и редактировать каталоги и адресатов. Есть ли способ для меня написать командный файл туда, где он запрашивает, запрашивая каталог, который пользователь хотел бы скопировать, и попросить диск, к которому пользователь хотел бы его скопировать?Как я могу разрешить пользователю выбирать каталоги для копирования?

Это то, что я использовал некоторое время.

@echo off 
:: variable 
set backupdir="Destination" 
set backupcmd=xcopy /e /h /f /y /v /c /i /r /g /k /d 
echo. 
echo +++ Backing Up Data +++ 
echo. 
echo. 
%backupcmd% "Directory\*.*" "%backupdir%\Data" 
timeout /t 2 
cls 
echo Backup Complete 
echo. 
echo. 
timeout /t 2 
cls 
echo. 
echo +++ Now taking hidden and system attributes off of folders +++ 
echo. 
echo. 
echo. 
attrib -s -h "Destination\Data" 
echo. 
echo. 
timeout /t 3 

И есть ли способ, которым я могу улучшить это с помощью xcopy?

+1

'set/p' подскажет; http://ss64.com/nt/set.html –

+0

Будет ли он спрашивать, какое место назначения они хотят скопировать? и где они хотят его скопировать? – JustinD

+0

«Улучшение использования xcopy» Какое улучшение вы ищете? – jimhark

ответ

1

Вы могли бы использовать:

SET /P variable=[promptString] 

Из документов:

Ключ/P позволяет установить значение переменной в строке ввода, введенного пользователем. Отображает указанную строку promptString перед чтением строки ввода. Команда promptString может быть пуста.

Вы можете использовать его как:

set /p backupdir=Enter Destination Directory: 

И:

set /p sourcedir=Enter Source Directory: 

Затем измените команду копирования, чтобы:

%backupcmd% "%sourcedir%\*.*" "%backupdir%\Data" 

И не забудьте вашу команду attrib (который должен был уже использовать %backupdir%):

attrib -s -h "%backupdir%\Data" 

В качестве альтернативы, рассмотреть возможность аргументы опциональный командной строки:

dobackup Destination BackupDir 

Реализовано с этими изменениями:

if "%1" == "" (
    set /p backupdir=Enter Destination Directory: 
) else (
    set backupdir=%~1 
) 

if "%2" == "" (
    set /p sourcedir=Enter Source Directory: 
) else (
    set sourcedir=%~2 
) 

Наконец, добавив SETLOCAL линию после того, как @echo off будет держать ваши именованные переменные из глобального пространства среды.

Смежные вопросы