2016-02-02 29 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