我正在嘗試使用批處理文件將包含sql代碼的文件轉換爲與MSSQL實用程序bcp一起使用的單個環境變量。 例如,如果InFile.sql包含For循環的輸出中的虛假空間
-- This is a simple statement
SELECT *
FROM table
的ECHO %query%
輸出應該是 SELECT * FROM people
下面的代碼對我的作品大部分時間
SETLOCAL=ENABLEDELAYEDEXPANSION
:: Replace VarOld with VarNew
FOR /f "delims=" %%a IN ('TYPE InFile.sql') DO (SET line=%%a & ECHO !line:table=people! >> TmpFile1)
:: Remove comment lines starting with '-' and remove newline characters
(FOR /f "eol=- delims=" %%a in (TmpFile1) DO SET/p=%%a) <nul >TmpFile2
:: Create variable 'Query'
FOR /f "delims=" %%a IN ('TYPE TmpFile2') DO SET query=%%a
然而,第一部分爲循環在每行的末尾添加3個空格字符,第二個FOR循環添加另一個空格字符,因此結果爲 SELECT * FROM people
我可以應付額外的空間(儘管純粹主義者並不開心!),直到我不得不使用它與一個長的SQL查詢和多個替換步驟 - 文件中的每一行都添加了12個空格字符。額外的空間足以使查詢結果大約8300個字符長 - 對於批處理文件行的Windows 8196字符限制來說太多了。
任何人都可以看到我可以如何刪除這些虛假空間嗎?