我来寻求帮助。 我有一个自动创建的文档。这是SQL查询的结果。
换行符的示例。用词我们看到了
"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 :(得分: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...
行。)
所以 - 在某个地方我们得到word
和notepad++
以不同的方式解释相同的数据。
我使用editplus
,这允许我查看文件中的实际十六进制代码。也许如果您可以使用十六进制编辑器检查文件,则会显示真实的文件内容。