2015-11-24 53 views
0

我要保存到文本文件,批處理腳本波紋管的結果是:批次:回聲無法保存到文本文件

我包含run.bat文件:

for /f "tokens=5" %%a in ('findstr /L "Total " max_page.csv') do echo %%a> max_page.txt 
set /p max_page=<max_page.txt 
for /l %%i IN (1,1,%max_page%) do (
echo OPTIONS (SKIP=0, errors=1000) LOAD DATA APPEND INTO TABLE tb_data FIELDS TERMINATED BY X'09' TRAILING NULLCOLS (no "TRIM (:no)",date_pymn DATE "DD-MM-YYYY") > data.ctl 
) 

凡我MAX_PAGE。 CSV包含:

aaaaaaaaaaaa 
bbbbbbbbbbbb 
cccccccccccc 

Total 6434 Record : 65 Page 

for /f "tokens=5" %%a in ('findstr /L "Total " max_page.csv') do echo %%a> max_page.txt的結果是65並保存到txt文件(max_page.txt)

如果我執行RUN.bat,屏幕上顯示錯誤LOAD was unexpected at this time。 LOAD是行echo OPTIONS (SKIP=0, errors=1000) LOAD DATA APPEND INTO TABLE tb_data FIELDS TERMINATED BY X'09' TRAILING NULLCOLS (no "TRIM (:no)",date_pymn DATE "DD-MM-YYYY") > data.ctl的一部分

哪裏出錯我的腳本?感謝您的建議

回答

1

最簡單的辦法就是逃生被錯誤地解釋爲語句結束用插入符^

因此(2個插入記號插入)

字符
echo OPTIONS (SKIP=0, errors=1000^) LOAD DATA APPEND INTO TABLE tb_data FIELDS TERMINATED BY X'09' TRAILING NULLCOLS (no "TRIM (:no)",date_pymn DATE "DD-MM-YYYY"^) > data.ctl 

似乎有你的第二個for循環中沒有邏輯上的理由 - 它只是寫的文本行的文件,然後覆蓋該文件與同一行64次以上(給予max_page被設定爲65)

同樣,'max_page.txt`被創建並覆蓋,直到源文件中最後一個「總計」行。這將是更容易使用

for /f "tokens=5" %%a in ('findstr /L "Total " max_page.csv') do set max_page%%a 

而不是在所有創建max_page.txt ...

+0

非常感謝。 '^'工作正常,我已經修復了我的腳本作爲你的建議。 – flyingbird013

1

第一)在

echo OPTIONS (SKIP=0, errors=1000) LOAD DATA APPEND INTO TABLE tb_data FIELDS TERMINATED BY X'09' TRAILING NULLCOLS (no "TRIM (:no)",date_pymn DATE "DD-MM-YYYY") > data.ctl 

被解釋爲的結束FOR循環。既然你只有一個線環,擺脫了開閉括號,並把用於構造整個上這樣一行

for /l %%i IN (1,1,%max_page%) do echo OPTIONS (SKIP=0, errors=1000) LOAD DATA APPEND INTO TABLE tb_data FIELDS TERMINATED BY X'09' TRAILING NULLCOLS (no "TRIM (:no)",date_pymn DATE "DD-MM-YYYY") > data.ctl 
+0

Yes..work罰款。先生非常感謝您 :)。 – flyingbird013