Windows批处理IF与ELSE IF用法及日期序数文件夹创建方案
Windows批处理:创建带序数后缀的日期文件夹 + IF/ELSE IF用法详解
没问题,我来帮你搞定这个批处理脚本,顺便把Windows批处理里IF和“ELSE IF”的用法讲明白~
一、先搞懂批处理里的IF与“ELSE IF”逻辑
Windows批处理没有原生的ELSE IF关键字,但咱们可以通过ELSE (IF ...)的嵌套写法实现多分支判断,语法上要注意这几点:
- IF的条件和执行代码之间必须留空格
- 当IF/ELSE后面跟着多行代码时,必须用括号
()包裹,而且左括号要和IF/ELSE在同一行(换行写代码后再补右括号) - 数字比较要用
EQU(等于)、NEQ(不等于)这类运算符,字符串比较用==
举个简单的分支判断例子:
@echo off set "num=22" IF %num% EQU 1 ( echo 1st ) ELSE IF %num% EQU 2 ( echo 2nd ) ELSE IF %num% EQU 3 ( echo 3rd ) ELSE ( echo %num%th )
这里的ELSE IF本质是在ELSE的代码块里嵌套了一个IF语句,这是批处理实现多分支的标准写法。
二、满足你需求的完整批处理脚本
下面的脚本会自动获取当前日期,生成带序数后缀的文件夹名称,然后在当前目录创建该文件夹,还能避免不同地区日期格式不一致的问题:
@echo off setlocal enabledelayedexpansion :: 用WMIC获取统一格式的日、月、年,避免系统地区差异导致的%date%格式混乱 for /f "tokens=2 delims==" %%a in ('wmic Path Win32_LocalTime Get Day /Format:value') do set "day=%%a" for /f "tokens=2 delims==" %%a in ('wmic Path Win32_LocalTime Get Month /Format:value') do set "month=%%a" for /f "tokens=2 delims==" %%a in ('wmic Path Win32_LocalTime Get Year /Format:value') do set "year=%%a" :: 将数字月份转换成英文缩写 set "month_abbr=" IF !month! EQU 1 set "month_abbr=Jan" IF !month! EQU 2 set "month_abbr=Feb" IF !month! EQU 3 set "month_abbr=Mar" IF !month! EQU 4 set "month_abbr=Apr" IF !month! EQU 5 set "month_abbr=May" IF !month! EQU 6 set "month_abbr=Jun" IF !month! EQU 7 set "month_abbr=Jul" IF !month! EQU 8 set "month_abbr=Aug" IF !month! EQU 9 set "month_abbr=Sep" IF !month! EQU 10 set "month_abbr=Oct" IF !month! EQU 11 set "month_abbr=Nov" IF !month! EQU 12 set "month_abbr=Dec" :: 判断日期的序数后缀 set "suffix=" IF !day! EQU 1 set "suffix=st" ELSE IF !day! EQU 2 set "suffix=nd" ELSE IF !day! EQU 3 set "suffix=rd" ELSE IF !day! EQU 21 set "suffix=st" ELSE IF !day! EQU 22 set "suffix=nd" ELSE IF !day! EQU 23 set "suffix=rd" ELSE set "suffix=th" :: 拼接成最终的文件夹名称(比如1stJan2024、22ndFeb2024) set "folder_name=!day!!suffix!!month_abbr!!year!" :: 创建文件夹并提示 mkdir "!folder_name!" echo 已成功创建文件夹:!folder_name! endlocal
脚本细节说明:
- setlocal enabledelayedexpansion:启用延迟环境变量扩展,这样在循环和条件判断里能正常读取动态变化的变量(用
!变量!代替%变量%) - WMIC获取日期:避开了不同系统地区下
%date%格式不一致的坑,保证能精准拿到日、月、年的数字值 - 序数后缀判断:覆盖了所有需要特殊后缀的日期(1、2、3、21、22、23),其余日期统一用
th - 月份缩写转换:完全匹配你要的“Jan”“Feb”这类格式,要是想用全称(比如January),直接修改对应赋值即可
三、使用方法
把上面的代码复制到记事本里,保存为CreateDateFolder.bat,双击运行就能在当前目录生成符合要求的日期文件夹啦~
内容的提问来源于stack exchange,提问作者sudheer T
相关产品推荐
相关产品推荐

