我正在尝试编写一个批处理文件脚本,该脚本将创建一个.sql文件并写入所需的内容,以下是我正在尝试的逻辑,我们需要合并每个国家/地区的所有.sql脚本并创建一个主SQL文件,该文件将调用所有其他.sql文件,我们将这些文件提供给我们的DBA团队,它们将运行主文件而不是运行单个文件,
我创建了将创建.sql文件的脚本,并使用@echo命令创建了一些基本命令,我也能够在特定文件夹中列出文件,但无法执行循环以连接文件名称带有前缀和后缀的字符。
以下是我尝试过的代码
@echo off
break>"C:\Gopi_Kishan\DBBR\Daily_attachments\ausqascript_20190708\dblank.sql"
cd C:\Gopi_Kishan\DBBR\Daily_attachments\ausqascript_20190708
@echo Set scan off;>>dblank.sql
@echo alter session set current_schema="SV2AUPR";>>dblank.sql
rem dir /b "C:\Gopi_Kishan\DBBR\Daily_attachments\ausqascript_20190708\" >>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;
我想在文件名前添加“ @@”,并在其后添加“;”文件名末尾 有人可以帮我吗?
答案 0 :(得分:1)
&ch
应该按照您的要求进行操作。 char (*)[N]
命令周围的括号允许通过(
@for /f "delims=" %%a in ('dir /a-d /b "C:\Gopi_Kishan\DBBR\Daily_attachments\ausqascript_20190708\*.sql"') do @echo @@%%a;&@echo show_error;
)>>dblank.sql
重定向输出(附加到文件)。
对于... for
(每个>>
文件),其基本格式的名称为*.sql
。 .sql
表示没有目录名匹配。然后%%a
加上前缀和后缀,再加上/a-d
行;重定向到附加到文件。
请注意,如果您像在脚本开始时一样正常执行echo
,则不需要每个批处理命令前的show_error;
。