从批处理文件中的一个文件到一个文件精确打印行中的所有字符

时间:2018-07-20 06:14:56

标签: batch-file

这里我正在将第1到5行从一个文件打印到另一个文件。它的工作正常,但有一个小问题,即行是从左侧修剪的,我不想修剪,它应该与输入文件相同

infile.txt

<RCO-XXX-AGENT>
 <CREATED>2018-06-28 10:19:09</CREATED>
 <FORMAT>
  <VARIABLE>
   <EOR>/010</EOR>
   <EOC>/009</EOC>
   <CTR>5</CTR>

code

echo off
setlocal enabledelayedexpansion
call :Print_Lines > outfile.txt
endlocal
:Print_Lines
setlocal enabledelayedexpansion
set cur=0
for /f "delims==" %%i in (infile.txt) do (  
set /a cur=cur+1 
if !cur! geq 1 (
if !cur! leq 5 (
  for /f "tokens=*" %%j in ( "%%i") do (
  echo %%j
  )
 )
)
)
endlocal
exit /b 0
goto :eof

outfile.txt

<RCO-XXX-AGENT>
<CREATED>2018-06-28 10:19:09</CREATED>
<FORMAT>
<VARIABLE>
<EOR>/010</EOR>

2 个答案:

答案 0 :(得分:1)

第二个循环没用

它应该可以工作:

echo off
setlocal enabledelayedexpansion
call :Print_Lines > outfile.txt
endlocal
:Print_Lines
setlocal enabledelayedexpansion
set cur=0
for /f "delims==" %%i in (infile.txt) do (  
set /a cur=cur+1 
if !cur! geq 1 (
if !cur! leq 5 (
  echo %%i
 )
)
)
endlocal
exit /b 0
goto :eof

在您的示例中,左侧的空格未打印,因为它们被视为定界符

答案 1 :(得分:0)

我建议这种方法:

@Echo Off
Set "Num=5"
<"infile.txt" (For /L %%A In (1,1,%Num%) Do (Set "_="
        Set /P "_="
        SetLocal EnableDelayedExpansion
        Echo=!_!
        EndLocal))>"outfile.txt"

在此处可以根据需要将值调整为Num