【发布时间】:2016-03-14 02:31:37
【问题描述】:
我正在尝试执行一个批处理脚本来备份文件/目录,路径由用户指定。问题是我需要让用户决定他要输入多少条路径(可以超过 10 条),然后在复制新目录中的所有文件/目录之后。到目前为止,我所做的仅以一条路径为参数:
SET /P numuser=How many paths?
SET /P pathh=Enter the path
SET "foldname=sav-%DATE%-%TIME:~0,8%
SET "foldname=%foldname::=-%
echo foldname=%foldname%
mkdir "%foldname%"
cd "%foldname%"
xcopy "%pathh%" "%cd%"
pause
考虑到使用决定了路径的数量,我不太确定如何将所有不同的路径存储在不同的变量中。所以我不能初始化像“SET path1=""SET path2="etc...这样的变量,因为我不知道我需要的路径数。我想我需要一个循环:
FOR %%c IN(numuser) DO
SET /P path1=enter the path
xcopy "%path1%" "%cd%"
但是在这里我又遇到了路径变量名的问题。随着循环的进行,我需要增加并创建新变量。我不知道该怎么做。
【问题讨论】:
-
有趣的是您想如何在 MS-DOS 上执行此操作,请检查您的标签:
Don't use this tag for questions regarding the Windows command line.... 有没有想过使用robocopy完成此任务?如果我没记错的话,它可以使用包含多个目录的文本文件。 -
我刚查了robocopy。但我认为问题仍然存在;当我启动脚本时,它必须询问用户要保存多少条路径;它不能是从用户选择开始就已经知道的多个路径吗?
-
虽然这涉及到批处理文件以外的其他技术:使用 windows 脚本主机或 powershell 创建某种类型的 gui,它会询问用户文件夹。将它们写入文件并运行 robocopy。
-
您可以让用户一次性提供所有路径作为命令行参数并在
for循环中使用%*来处理它们,或者您可以让用户将所有路径文本文件中的路径并使用for /f循环来处理文本文件。 -
而且您根本不需要为单独的路径使用单独的变量;使用完后,只需覆盖循环内的变量即可。
标签: batch-file windows-7 backup