我如何允许用户select要复制的目录?

我试图写一个基本上用于复制目的地的batch file。 现在,我想让其他人可以使用它,而不必进入和编辑目录和目的地。 有没有办法让我把batch file写到它提示的地方,询问用户想要复制的目录,然后询问用户想要复制到的驱动器?

这是我现在使用了一段时间。

@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?

你可以使用:

 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 ) 

最后,在@echo off之后添加一个SETLOCAL行将使您的命名变量不在全局环境空间之内。