问题:我有几个包含sql create table / column / view / storedProcedure textfiles的文本文件。现在我想将文本文件合并为一个文本文件。
我进入目录,然后输入:
type *.sql >> allcommands.sql
现在问题是我应该在每个文件的内容之后添加文本“GO”。
我可以通过
追加Gotype *.sql >> allcommands.sql & echo GO >> allcommands.sql
但这只插入一次。 如何使用DOS命令完成此操作?
答案 0 :(得分:6)
你想要这样的东西:
for %%f in (*.sql) do type %%f >>allcommands.sql & echo GO >> allcommands.sql
%%
用于批处理文件。如果您没有从批处理文件中运行它,则只需要单个%符号。
答案 1 :(得分:3)
试试这个
for %%f in (*.sql) do (
type %%f >>allcommands.sql
echo. >> allcommands.sql
echo GO >> allcommands.sql
echo. >> allcommands.sql )
它添加换行符然后转到每个SQL文件。它适用于我尝试。
答案 2 :(得分:0)
使用copy将第一个文件与带有“GO”文本的文件连接起来,然后再次与第二个文件连接。
答案 3 :(得分:0)
@echo off
CLS
::concat.bat outfile.sql
setlocal EnableDelayedExpansion
If EXIST GOTMP.TMP DEL /Q GOTMP.TMP
Echo GO>GOTMP.TMP
ECHO.>>GOTMP.TMP
If EXIST "%~1" DEL /Q "%~1"
Echo.>"%~1"
for /f "tokens=*" %%A in ('dir /a-d /on /b "*.sql"') do call :perfaction "%%A%" "%~1"
ECHO Done Generating Output "%~1"
ECHO.
pause
Goto :EOF
:perfaction
ECHO "%~1"
copy "%~2"+"%~1"+GOTMP.TMP "%~2"
GOTO :EOF