You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用batch脚本批量生成指定单位编码和日期范围的.rep文件

Batch 文件批量生成脚本修正方案

原有代码问题梳理

  • Batch 原生不支持类C风格的循环语法,需使用 Batch 自带的循环、变量扩展规则
  • 原有文件名拼接逻辑未使用循环变量,无法生成带不同日期的独立文件
  • 未做日期合法性校验,直接对8位日期数值递增会产生跨月/跨年的非法日期值

修正后可运行代码

@echo off        
cls
color 1f
title Bat automatiza 2V
:menu
Time /t
Date /t
echo *********************************
echo * Automatize files generate     *
echo *********************************
set /p "unit_code=请输入Unit code:"
set /p "start_date=请输入Initial date(格式YYYYMMDD):"
set /p "end_date=请输入Final date(格式YYYYMMDD):"

:: 开启延迟变量扩展
setlocal enabledelayedexpansion
:: 循环处理日期,直到等于结束日期
set "current_date=%start_date%"
:date_loop
if !current_date! gtr %end_date% goto end_loop
:: 生成对应空文件
type nul > 2v!unit_code!!current_date!.rep
:: 日期加1计算(支持跨月、跨年)
set "year=!current_date:~0,4!"
set "month=!current_date:~4,2!"
set "day=!current_date:~6,2!"
set /a "day=1!day!-100, month=1!month!-100, year+=0"
set /a "a=(14-month)/12, y=year+4800-a, m=month+12*a-3, jdn=day + (153*m+2)/5 + 365*y + y/4 - y/100 + y/400 - 32045 + 1"
set /a "l=jdn+68569, n=(4*l)/146097, l=l-(146097*n+3)/4, i=(4000*(l+1))/1461001, l=l-(1461*i)/4+31, j=(80*l)/2447, day=l-(2447*j)/80, l=j/11, month=j+2-12*l, year=100*(n-49)+i+l"
:: 补日期前导零
if !day! lss 10 set "day=0!day!"
if !month! lss 10 set "month=0!month!"
set "current_date=!year!!month!!day!"
goto date_loop
:end_loop
endlocal
echo 所有文件生成完成
pause

简化方案(仅同月份场景适用)

如果你的使用场景固定为同月份的连续日期,可以用更简单的for /L循环替换上面的日期计算逻辑,运行效率更高:

:: 同月份场景简化版循环
set /a start_day=%start_date:~6,2%
set /a end_day=%end_date:~6,2%
set date_prefix=%start_date:~0,6%
for /L %%d in (%start_day%,1,%end_day%) do (
    set "day=%%d"
    if !day! lss 10 set "day=0!day!"
    type nul > 2v!unit_code!!date_prefix!!day!.rep
)

内容的提问来源于stack exchange,提问作者Erick Barbosa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:06:08