Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何允许用户选择要复制的目录?_Windows_Batch File - Fatal编程技术网

Windows 如何允许用户选择要复制的目录?

Windows 如何允许用户选择要复制的目录?,windows,batch-file,Windows,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 D

我正在尝试编写一个批处理文件,它基本上用于复制目标。现在,我想让其他人可以使用它,而不必进入编辑目录和目的地。是否有一种方法可以将批处理文件写入其提示的位置,询问用户希望复制的目录,以及询问用户希望复制到的驱动器

这是我已经用了一段时间了

@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: 
以及:

然后将“复制”命令更改为:

%backupcmd% "%sourcedir%\*.*" "%backupdir%\Data"
不要忘记您的
attrib
命令(它应该已经在使用
%backupdir%
):

作为替代,考虑允许可选命令行参数:

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
将使您的命名变量远离全局环境空间。

set/p
将提示;它会问他们想要复制到什么目的地吗?他们想把它复制到哪里?“使用xcopy改进”您想要什么样的改进?
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
)