定时批处理脚本需求:重命名最新CSV并清理指定文件
解决方案:定时批处理脚本处理sFTP接收的CSV文件
Hey there! Let's build a batch script that handles your CSV file workflow exactly as you requested, plus set it up to run automatically on a schedule. Here's the step-by-step breakdown:
完整批处理脚本
Save this as Process_CSV.bat (you can name it whatever you like):
@echo off setlocal enabledelayedexpansion :: 替换为你的sFTP文件接收文件夹路径 set "TARGET_DIR=C:\Your\SFTP\Receive\Folder" :: 步骤1:删除已存在的extract.csv if exist "%TARGET_DIR%\extract.csv" ( del "%TARGET_DIR%\extract.csv" echo Deleted existing extract.csv ) else ( echo No existing extract.csv found to delete ) :: 步骤2:找到最新的.csv文件并重命名为extract.csv set "LATEST_FILE=" for /f "delims=" %%f in ('dir /b /o-d "%TARGET_DIR%\*.csv"') do ( if not defined LATEST_FILE ( set "LATEST_FILE=%%f" goto :rename_file ) ) :rename_file if defined LATEST_FILE ( ren "%TARGET_DIR%\!LATEST_FILE!" "extract.csv" echo Renamed latest CSV file !LATEST_FILE! to extract.csv ) else ( echo No CSV files found in the target directory ) :: 步骤3:删除所有以SL开头的文件 del "%TARGET_DIR%\SL*.*" echo Deleted all files starting with SL endlocal
脚本细节说明
@echo off:关闭命令行的默认命令输出,让脚本运行过程更整洁setlocal enabledelayedexpansion:启用延迟变量扩展,确保循环中能正确获取最新的文件变量TARGET_DIR:务必替换成你的实际sFTP文件接收文件夹路径- 步骤1:检查
extract.csv是否存在,存在则删除并给出提示;不存在也会告知状态 - 步骤2:用
dir /b /o-d命令按修改时间倒序列出所有CSV文件,取第一个(最新的)进行重命名。如果没有找到任何CSV文件,会给出明确提示 - 步骤3:通过通配符
SL*.*删除所有以SL开头的文件(如果只想删除CSV格式的,可改成SL*.csv)
设置定时执行(Windows任务计划程序)
- 打开任务计划程序,点击「创建基本任务」
- 给任务起个清晰的名字(比如「自动处理SFTP CSV文件」),点击下一步
- 选择触发频率(每天、每周、每隔几小时等),设置具体执行时间,点击下一步
- 选择「启动程序」选项,点击下一步
- 在「程序或脚本」栏选择你保存的批处理脚本,点击完成
- (可选)在任务的「设置」选项卡中勾选「不管用户是否登录都要运行」,确保脚本能在后台稳定执行
内容的提问来源于stack exchange,提问作者Saif D.




