【发布时间】:2018-03-04 16:10:30
【问题描述】:
这是我用于数据备份的 .bat 脚本:
ECHO OFF
set source="[source path]"
set destination="[destination path]"
for /F "tokens=2-4 delims=/ " %%i in ('date /t') do set yyyymmdd1=%%j"."%%i"."%%k
if exist %destination% goto GO
:GO
mkdir %destination%%yyyymmdd1%
xcopy %source%* %destination%%yyyymmdd1% /s/d/y/c/v/r
echo.
echo Finished copying %source% to %destination%
echo.
echo Created %destination%%yyyymmdd1%
pause
主要问题:它不会复制空文件夹,所以它需要一个实际的文件来考虑文件夹本身。
不错的扩展:该脚本当前按天比较源文件夹和目标文件夹,并仅复制更新的文件。我将如何按日期/日期来实现目标文件夹结构比较,然后是小时(= Folder(“9/22/2017”)/Folder(“7am”)/[完整源文件夹/文件]。这将使我能够如果我经常安排脚本,则回退到我一小时前创建的文件。
我根据需要稍微调整了上面的脚本,但我不是原创者。我正在努力提高 .bat 脚本编写能力,我们将一如既往地为您提供帮助。
【问题讨论】:
-
除了 Magoo 的有用答案之外,
if exist和标签是无用的,因为程序流仍然会到达下一个语句。mkdir也将创建带有启用扩展的中间文件夹(默认)。您的报价方案有点奇怪-为什么要单独引用日期中的点?最好只引用完整路径。
标签: batch-file backup batch-processing