2016-11-02 41 views
0

的我需要删除或跳过一个txt的最后一行, 这是我的txt批量删除或跳过最后一行在TXT

cod_est nro_prsna_clnte   cod_prdto    cod_sub_prdto   cod_cntto    fch_est     
------- ------------------------ ------------------------ ------------------------ ------------------------ ----------------------- 
C      777388304      93      2003    690005635930 2016-10-17 00:00:00.000 

A     910065094290      93      2003    690018602410 2016-10-17 00:00:00.000 

A     910065094300      93      2003    690018602420 2016-10-17 00:00:00.000 

A     910065094280      93      2003    690018602400 2016-10-17 00:00:00.000 

(4 rows affected) 

和批次是这个

for /F "tokens=1-6 skip=2" %%i in (OFB_INF_PSN_2.txt) do (echo %%i,%%j,%%k,%%l,%%m,%%n>> OFB_INF_PSN.txt) 

结果是这样的

C,777388304,93,2003,690005635930,2016-10-17 

A,910065094290,93,2003,690018602410,2016-10-17 

A,910065094300,93,2003,690018602420,2016-10-17 

A,910065094280,93,2003,690018602400,2016-10-17 

(4,rows,affected),,, 

,但我需要删除或跳过最后一行((4,行,影响),,,)

任何人可以帮助我, 非常感谢你

回答

1

好听的,因为给出的数据,你目前不太可能有失踪*最后想列),你可以使用

for /F "tokens=1-6 skip=2" %%i in (OFB_INF_PSN_2.txt) do if "%%n" neq "" (echo %%i,%%j,%%k,%%l,%%m,%%n>> OFB_INF_PSN.txt) 

,其中这里的"%%n"可能是"%%l%%m%%n"意思是“最后3个结果列中的每一列都是空的”

0

您的其他选项是将文件的输出传递给FIND命令以查找所有没有“行a ffected”

for /F "tokens=1-6 skip=2" %%i in ('type OFB_INF_PSN_2.txt ^|find /I /V "rows affected"') do (echo %%i,%%j,%%k,%%l,%%m,%%n>> OFB_INF_PSN.txt) 
0

甲跳过最后一行独立于它的内容的更一般的方式是以下代码:

@echo off 
setlocal EnableExtensions DisableDelayedExpansion 

rem // Define constants here: 
set "FILE_IN=OFB_INF_PSN_2.txt" 
set "FILE_OUT=OFB_INF_PSN.txt" 

rem // Redirect the entire output data once only: 
> "%FILE_OUT%" (
    rem // Reset variable holding line string: 
    set "LINE=" 
    rem // Read text file line by line: 
    for /F "usebackq skip=2 tokens=1-6" %%I in ("%FILE_IN%") do (
     rem // Toggle delayed expansion to not lose exclamation marks: 
     setlocal EnableDelayedExpansion 
     rem // Avoid output of initial empty line: 
     if defined LINE (
      rem // Output previous line string: 
      echo(!LINE! 
     ) 
     endlocal 
     rem // Store current line string to be output during next iteration delayed: 
     set "LINE=%%I,%%J,%%K,%%L,%%M,%%N" 
    ) 
) 

endlocal 
exit /B 
0

此示例批处理文件应该只输出与多个结束行:

@(For /F "Tokens=1-6" %%A In ('FindStr [0-9]$ "OFB_INF_PSN_2.txt"') Do @Echo=%%A,%%B,%%C,%%D,%%E,%%F)>"OFB_INF_PSN.txt"