初尝BAT以及任务计划程序

今天你自动了吗

桌面上有个文件夹"study_tmp"用来存我的临时学习资料,每隔一段时间都要清理一下,把文件从桌面到D盘对应的文件夹中。好麻烦,所以我想写一个bat脚本并结合任务计划程序来自动化这个工作。

我的设想是:每个月的一号,自动将源文件夹中的所有文件以及文件夹移动到目标文件夹中。并且将目标文件夹命名为"{上一次运行脚本的日期}to{这一次运行脚本的日期}"。然后编写脚本如下:

脚本编写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
@echo off
set "source_folder=C:\Users\ASUSROG\Desktop\study_tmp"

REM 检查源文件夹是否为空
dir /b "%source_folder%" | findstr "^" >nul
if errorlevel 1 (
echo Source folder is empty. Exiting...
exit /b
)

REM 获取当前日期
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /value') do set "current_datetime=%%I"
set "current_datestamp=%current_datetime:~0,4%%current_datetime:~4,2%%current_datetime:~6,2%"

REM 检查是否存在上一次运行的日期记录文件
set "date_file=D:\BAT\study_tmp_transport\last_run_date.txt"
if exist "%date_file%" (
set /p last_date=<"%date_file%"
) else (
set "last_date="
)

REM 设置目标文件夹名称
if defined last_date (
set "destination_folder=D:\STUDY\%last_date%to%current_datestamp%"
) else (
set "destination_folder=D:\STUDY\to%current_datestamp%"
)

REM 创建目标文件夹
if not exist "%destination_folder%" (
mkdir "%destination_folder%"
)

REM 使用robocopy移动文件和文件夹到目标文件夹中,并清空源文件夹
robocopy "%source_folder%" "%destination_folder%" /E /MOVE /NFL /NDL /NJH /NJS

REM 重新创建源文件夹
mkdir "%source_folder%"

REM 将当前日期写入日期记录文件
echo %current_datestamp% > "%date_file%"

计划任务

然后在任务计划程序中新建一个任务,每个月的一号运行这个脚本。这样就实现了自动化的目标。

  • 打开任务计划程序:
    • 在 Windows 搜索栏中键入“任务计划程序”,然后点击打开。
    • 或者,按下 Win + R 组合键打开“运行”对话框,输入 taskschd.msc,然后按 Enter 键。
  • 创建新任务:
    • 在任务计划程序中,选择“创建基本任务”或“创建任务”选项,取决于您使用的 Windows 版本。
  • 配置任务设置:
    • 在任务创建向导中,输入任务名称和描述,然后点击“下一步”。
    • 在触发器选项中,选择“月度”触发器,然后点击“下一步”。
    • 在选择月份和日期页面上,选择每月的1号,然后点击“下一步”。
  • 配置操作:
    • 在“选择操作”页面上,选择“启动程序”,然后点击“下一步”。
    • 在“启动程序”页面上,浏览并选择要运行的批处理脚本文件(.bat 文件),然后点击“下一步”。
  • 完成设置:
    • 在“完成”页面上,确保选中“打开属性对话框以编辑此任务的其他属性”复选框,然后点击“完成”。
  • 配置其他属性:
    • 在任务属性对话框中,可以设置任务的其他属性,如“安全选项”、“触发器”、“操作”等。可以根据需要进行调整,然后点击“确定”保存更改。

然后就可以了,每个月的一号,任务计划程序会自动运行这个脚本,实现自动化的目标。

后记

我去发现可以把在D盘的文件夹直接创建快捷方式到桌面,这样就不会占桌面的空间了。所以这个脚本就画蛇添足了哎哎