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

如何编写批处理脚本生成带指定前缀后缀的主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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:58:13