2010-08-10 54 views
1

問題:我有幾個文本文件,其中包含sql create table/column/view/storedProcedure textfiles。現在我想將文本文件合併到一個文本文件中。如何在合併到文件之前向「類型<filename>」DOS命令中添加一個字符串?

我進入目錄,然後鍵入:

type *.sql >> allcommands.sql 

我們的問題是我應該添加的每個文件的內容後的文本「GO」。

我可以追加圍棋做

type *.sql >> allcommands.sql & echo GO >> allcommands.sql 

但這只是插入去一次。 我該如何用DOS命令完成此操作?

回答

6

你想是這樣的:

for %%f in (*.sql) do type %%f >>allcommands.sql & echo GO >> allcommands.sql 

%%是在批處理文件中使用。如果您沒有從批處理文件運行它,則只需要單個%符號。

+1

+1。很高興被證明是錯誤的,這樣的好答案,並學習新的東西。 – David 2010-08-10 16:05:21

0

使用copy將第一個文件與具有「GO」文本的文件連接起來,然後再與第二個文件連接。

+1

這將工作,但他將不得不手動指定要複製的文件的順序..這將無法用「* .sql」完成。這將比手動輸入單詞「GO」更有用。 – David 2010-08-10 16:02:40

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 
3

嘗試那麼這一個

for %%f in (*.sql) do (
type %%f >>allcommands.sql 
echo. >> allcommands.sql 
echo GO >> allcommands.sql 
echo. >> allcommands.sql) 

它增加了新行去爲每個SQL文件。它適用於我嘗試它。

相關問題