如何编写批处理脚本生成带指定前缀后缀的主SQL调用文件?
解决批处理脚本生成调用所有SQL文件的主脚本问题
我来帮你搞定这个批处理脚本的需求——你需要遍历指定文件夹下的所有.sql文件,为每个文件生成带@@前缀、分号后缀,并且紧跟SHOW ERROR;的调用语句。这里是修改后的完整可运行脚本:
@echo off setlocal enabledelayedexpansion :: 定义主SQL文件路径 set MAIN_SQL=C:\Gopi_Kishan\DBBR\Daily_attachments\ausqascript_20190708\dblank.sql :: 定义目标文件夹路径(和主SQL同目录) set TARGET_DIR=C:\Gopi_Kishan\DBBR\Daily_attachments\ausqascript_20190708 :: 清空并初始化主SQL文件 break>"%MAIN_SQL%" :: 写入基础配置语句 @echo Set scan off;>>"%MAIN_SQL%" @echo alter session set current_schema="SV2AUPR";>>"%MAIN_SQL%" :: 遍历目标文件夹下的所有.sql文件,跳过主SQL文件本身 for %%f in ("%TARGET_DIR%\*.sql") do ( if not "%%~nxf"=="dblank.sql" ( :: 生成符合要求的调用语句 @echo @@%%~nxf; SHOW ERROR;>>"%MAIN_SQL%" ) ) echo 主SQL文件已生成完成! pause
关键部分说明
setlocal enabledelayedexpansion:启用延迟变量扩展,确保循环中变量解析正常(属于批处理脚本的好习惯,避免变量替换异常)for %%f in ("%TARGET_DIR%\*.sql"):精准遍历目标文件夹下所有.sql后缀的文件if not "%%~nxf"=="dblank.sql":跳过我们自己生成的主SQL文件,避免出现自调用的无效语句%%~nxf:提取文件的完整名称(文件名+扩展名),直接用于拼接@@前缀和后续语句
执行这个脚本后,生成的dblank.sql内容会完全符合你的期望:
Set scan off;
alter session set current_schema="SV2AUPR";
@@BLUE-CR616-APPLICATION_NO_CHANGE.sql; SHOW ERROR;
@@CR_deployment_script.sql; SHOW ERROR;
@@Addroledetails.sql; SHOW ERROR;
@@SV2_IBIS_MOVE_DATA_PR_ALL_DB.sql; SHOW ERROR;
内容的提问来源于stack exchange,提问作者Kishan M
相关产品推荐
相关产品推荐

