«
写一个创建备份文件的批处理脚本

时间:2023-8-10     作者:Fotink     分类:


最近在写 Electron 程序,作为一个严谨的程序员,完成每一个阶段性的功能后,都想着做一份备份
原本我是手动选中项目文件夹下,需要备份的文件夹和文件,然后创建 zip 的压缩包,再将其放入 backups 文件夹中
但操作了几次之后,发觉步骤实在是繁琐,所以想着用自动化的工具来实现这一目的。秉持着越简单越好的原则,我选择使用批处理文件来完成这一操作
好处是代码量很小,且不需要打包;坏处是没法在 macOS 和 Linux 上运行,但 Unix 应该也可以编写 Bash 一类的脚本来实现同样的效果

代码

将以下文件保存为 备份.bat 并放入项目文件夹即可

@echo off
title 项目备份工具

:begin_input
set /p backup_name=请输入备份的备注信息:

:get_date
for /F "skip=1 delims=" %%F in ('
    wmic PATH Win32_LocalTime GET Day^,Month^,Year /FORMAT:TABLE
') do (
    for /F "tokens=1-3" %%L in ("%%F") do (
        set CurrDay=%%L
        set CurrMonth=%%M
        set CurrYear=%%N
    )
)
set filename=backups_%CurrYear%-%CurrMonth%-%CurrDay%_%backup_name%

:create_backup_file
"C:\Program Files\7-Zip\7z.exe" a -tzip .\backups\%filename%.zip .\html\ -i!.\js\ -i!.\assets\ -i!.\package.json

:finish_done
echo 已完成操作!

一些说明

1.上述文件 备份.bat 务必要保存为 ANSI 编码格式,因为如今大部分文本编辑器(包括 Windows 的记事本)保存文件的默认编码均为 UTF-8,而 .bat 文件在 cmd.exe 中执行时,只能解析 ANSI 编码的文本,如以 UTF-8 编码保存,执行时中文字符会以乱码的形式展现
2.执行时,首先需要输入备份的备注信息,接着将会获取备份当天的日期,并将日期、备注信息拼接为新的字符串 filename ;例如我输入“基本框架搭建完成”,那么 filename 的值为 “backups_2023_8_10_基本框架搭建完成”。你可以根据自己的需求修改这些字符串拼接方法。
3.上述文件调用了 7-Zip 这一压缩软件,且安装路径为"C:\Program Files\7-Zip\7z.exe",如果你没有安装 7-Zip,或者安装到了其它路径,又或者想要调用其它压缩软件,请修改这一行命令。这行命令依次将 \html\js\assets\package.json 几个文件夹和文件打包进了位于 backups 文件夹的备份文件中。
4.如果你想让它在最后执行完时,不自动关闭命令行窗口,那么你可以在文件的最后加上

pause>nul

即可实现窗口的停留,并按任意键关闭窗口