2016-02-02 28 views
0

我來請求幫助。 我有一個自動創建的文檔。這是SQL查詢的結果。如何刪除我行上的換行

帶換行符的行示例。與Word我們看到

"2K45.10 NEW";"ARC CA 125 CONTROL";"4";"0";"8 640"; 
"2K45.23 NEW";"ARC CA 125 REAGENT 400 TESTS ";"4";"0";"103 777" 
"2K45.28 NEW";"ARC CA 125 REAGENT 100 TEST ";"4";"0";"27 113" 
"2K46.01";"ARC ANTI TG CALIBRATOR ";"4";"0";"11 626" 
"2K46.10";"ARC ANTI TG CONTROL";"4";"0";"8 483" 
"2K46.25";"ARC ANTI TG RGT 100 TEST ";"4";"0";"26 872" 

如果我通過Nopad ++打開

"2K45.10 NEW";"ARC CA 125 CONTROL";"4";"0";"8 640";"BOITE";"";"TAXE 39% CD 38220000000" 
"2K45.23 NEW";"ARC CA 125 REAGENT 400 TESTS 
";"4";"0";"103 777" 
"2K45.28 NEW";"ARC CA 125 REAGENT 100 TEST 
";"4";"0";"27 113" 
"2K46.01";"ARC ANTI TG CALIBRATOR 
";"4";"0";"11 626" 
"2K46.10";"ARC ANTI TG CONTROL";"4";"0";"8 483" 
"2K46.25";"ARC ANTI TG RGT 100 TEST 
";"4";"0";"26 872" 

的問題是,在某些線路,也有換行,當我運行我的腳本,有或沒有換行的我在這裏切斷了我的路線。以下是我使用的腳本。

@echo off & cls 

Set "$c=1" 
setlocal enabledelayedexpansion 

(for /f "delims=" %%a in (input.txt) do (
    if !$c!==1 (
    set $l=%%a 
    set /a $c+=1 
    ) else (
    echo !$l!%%a 
    set "$c=1" 
) 
))>sortie.txt 

,其結果是

"2K45.23 NEW";"ARC CA 125 REAGENT 400 TESTS ";"4";"0";"103 777" 
"2K45.28 NEW";"ARC CA 125 REAGENT 100 TEST ";"4";"0";"30 652"; 
"2K46.01" ;"ARC ANTI TG CALIBRATOR ";"4";"0";"11 626" 
"2K46.10" ;"ARC ANTI TG CONTROL";"4";"0";"8 483" "2K46.25";"ARC ANTI TG RGT 100 TEST 
";"4";"0";"26 872";"2K47.01";"ARC ANTI TPO CALIBRATOR 

我不明白爲什麼,因爲沒有LF線,有更多的CRLF

謝謝你的幫助,你帶給我的。

+0

如果您在Notepad ++中打開SQL查詢輸出文本文件並單擊編碼菜單,選擇了什麼?在運行批處理腳本修復並在Notepad ++中再次打開後,編碼是否更改? – rojo

+0

如果你使用這個命令,它顯示是否正確MORE sortie.txt – RGuggisberg

+0

'word'是什麼?這是Microsoft Word編輯器嗎?如果是這樣,簡單的答案是停止使用Microsoft Word這樣的純文本文件。 – lit

回答

0
@ECHO Off 
SETLOCAL ENABLEDELAYEDEXPANSION 
SET "sourcedir=U:\sourcedir" 
SET "filename1=%sourcedir%\q35165390.txt" 

Set "$c=1" 

for /f "usebackqdelims=" %%a in ("%filename1%") do (
    if !$c!==1 (
    set $l=%%a 
    set /a $c+=1 
    ) else (
    echo !$l!%%a 
    set "$c=1" 
) 
) 

ECHO ============== 

Set "$c=" 

for /f "usebackqdelims=" %%a in ("%filename1%") do (
IF DEFINED $c (ECHO !line!%%a&SET "$c=" 
) ELSE (
    SET "line=%%a" 
    SET "line=!line:"=_#_!" 
    IF "!line:~-3!"=="_#_" (echo %%a) else (set "$c=1"&SET "line=%%a") 
) 
) 

GOTO :eof 

此批次的第一部分是你的代碼與一對夫婦的小的變化,從一個叫適合我的系統文件中讀取數據。

給你展示的notepad++版本的數據,運行此代碼的結果是:

"2K45.10 NEW";"ARC CA 125 CONTROL";"4";"0";"8 640";"BOITE";"";"TAXE 39% CD 38220000000""2K45.23 NEW";"ARC CA 125 REAGENT 400 TESTS 
";"4";"0";"103 777""2K45.28 NEW";"ARC CA 125 REAGENT 100 TEST 
";"4";"0";"27 113""2K46.01";"ARC ANTI TG CALIBRATOR 
";"4";"0";"11 626""2K46.10";"ARC ANTI TG CONTROL";"4";"0";"8 483" 
"2K46.25";"ARC ANTI TG RGT 100 TEST ";"4";"0";"26 872" 
============== 
"2K45.10 NEW";"ARC CA 125 CONTROL";"4";"0";"8 640";"BOITE";"";"TAXE 39% CD 38220000000" 
"2K45.23 NEW";"ARC CA 125 REAGENT 400 TESTS ";"4";"0";"103 777" 
"2K45.28 NEW";"ARC CA 125 REAGENT 100 TEST ";"4";"0";"27 113" 
"2K46.01";"ARC ANTI TG CALIBRATOR ";"4";"0";"11 626" 
"2K46.10";"ARC ANTI TG CONTROL";"4";"0";"8 483" 
"2K46.25";"ARC ANTI TG RGT 100 TEST ";"4";"0";"26 872" 

這意味着數據似乎包含與處理干擾字符。請注意,word版本不包括"BOITE";"";"TAXE 39% CD 38220000000"

但是從你的代碼我的輸出不輸出您從您的代碼匹配(和你錯過輸出整個...BOITE...線。)

所以 - 的地方,我們也越來越wordnotepad++不同的解釋相同的數據。

我使用editplus,它允許我看到文件中的實際十六進制代碼。也許如果你可以用十六進制編輯器檢查文件,真實文件的內容就會顯示出來。

+0

嗨Magoo,我嘗試你的代碼。 – DelNC