如何修改批处理脚本创建工作日文件夹、跳过月份目录并生成上下午子目录
需求实现修改后批处理代码
你可以直接使用下方修改完成的批处理代码,完全满足你的需求:
@ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION :: 你可以修改此处为你想要存放年份目录的根路径 SET "sourcedir=U:\years" SET /p year=### 请输入需要生成的年份 [例如: 2014]: IF NOT DEFINED year GOTO :EOF SET year=%year:,=% IF %year% lss 100 SET /a year=2000+year IF %year% gtr 1901 IF %year% lss 2099 GOTO generate ECHO 输入的年份超出范围,仅支持1901到2099年 GOTO :eof :generate MD "%sourcedir%" 2>nul SET /a feb=year %% 4 IF %feb%==0 (SET "feb=02,February,29") ELSE (SET "feb=02,February,28") PUSHD "%sourcedir%" MKDIR %year% 2>nul CD %year% :: 遍历全年12个月 FOR %%a IN ("01,January,31" "%feb%" "03,March,31" "04,April,30" "05,May,31" "06,June,30" "07,July,31" "08,August,31" "09,September,30" "10,October,31" "11,November,30" "12,December,31") DO ( FOR /f "tokens=1-3delims=," %%b IN (%%a) DO ( SET "month_name=%%c" SET "month_short=!month_name:~0,3!" SET "month_num=%%b" :: 遍历当月每一天 FOR /l %%d IN (1,1,%%d) DO ( :: 补全日为两位格式用于日期计算 SET "day_pad=0%%d" SET "day_pad=!day_pad:~-2!" :: 调用powershell判断当天是星期几,返回值1=周日 2=周一 ... 6=周五 7=周六 FOR /F "delims=" %%w IN ('powershell -Command "(Get-Date -Year !year! -Month !month_num! -Day %%d).DayOfWeek.value__"') DO SET "weekday=%%w" :: 仅周一到周五创建文件夹 IF !weekday! GEQ 2 IF !weekday! LEQ 6 ( SET "dir_name=%%d !month_short!" MKDIR "!dir_name!" 2>nul MKDIR "!dir_name!\Morning" 2>nul MKDIR "!dir_name!\Afternoon" 2>nul ) ) ) ) popd ECHO 目录生成完成 GOTO :EOF
改动说明
- 移除了原代码中创建月份父文件夹的逻辑,所有日期文件夹直接生成在对应年份目录下
- 新增星期判断逻辑:调用PowerShell获取对应日期的星期属性,自动跳过周六和周日
- 每个工作日文件夹创建完成后自动生成
Morning和Afternoon两个子文件夹 - 生成的日期文件夹命名规则完全符合示例要求:
日 月份缩写格式,例如1 Jan、31 Dec
使用注意事项
- 运行前可以修改代码开头
sourcedir变量的值,修改为你想要存放年份目录的根路径 - 运行时输入需要生成的年份即可,支持输入两位年份(例如输入22会自动识别为2022年)
- 兼容Windows 7及以上系统(系统需自带PowerShell,Win7及以上默认已预装)
内容的提问来源于stack exchange,提问作者Alexandru-Dan Pop
相关产品推荐
相关产品推荐

