Batch file 在批处理文件中将一个文件中的行中的所有字符精确打印到一个文件中
在这里,我正在将1到5号线从一个文件打印到另一个文件。工作正常,但有一个小问题,线是从左侧修剪的,我不想修剪,它应该与输入文件相同Batch file 在批处理文件中将一个文件中的行中的所有字符精确打印到一个文件中,batch-file,Batch File,在这里,我正在将1到5号线从一个文件打印到另一个文件。工作正常,但有一个小问题,线是从左侧修剪的,我不想修剪,它应该与输入文件相同 infle.txt: <RCO-XXX-AGENT> <CREATED>2018-06-28 10:19:09</CREATED> <FORMAT> <VARIABLE> <EOR>/010</EOR> <EOC>/009</EOC>
infle.txt
:
<RCO-XXX-AGENT>
<CREATED>2018-06-28 10:19:09</CREATED>
<FORMAT>
<VARIABLE>
<EOR>/010</EOR>
<EOC>/009</EOC>
<CTR>5</CTR>
<RCO-XXX-AGENT>
<CREATED>2018-06-28 10:19:09</CREATED>
<FORMAT>
<VARIABLE>
<EOR>/010</EOR>
outfile.txt
:
<RCO-XXX-AGENT>
<CREATED>2018-06-28 10:19:09</CREATED>
<FORMAT>
<VARIABLE>
<EOR>/010</EOR>
<EOC>/009</EOC>
<CTR>5</CTR>
<RCO-XXX-AGENT>
<CREATED>2018-06-28 10:19:09</CREATED>
<FORMAT>
<VARIABLE>
<EOR>/010</EOR>
2018-06-28 10:19:09
/010
第二个循环没有用
它应该在以下方面发挥作用:
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
在您的示例中,不打印左侧的空格,因为它们被视为分隔符我建议使用以下方法:
@Echo关闭
设置“Num=5”
“outfile.txt”
您可以根据需要将值调整为
Num
。当您将“tokens=*”
更改为“delims=“
”时会发生什么情况?您必须将goto:EOF
置于之前:打印行
以避免此部分执行两次…如果您想要自己的批处理文件。如果!狗屎!GEQ1(
和退出后的goto:eof
一样也没用;退出意味着一个endlocal。更短的:Set/a cur+=1
应该有一个IF
命令来检查计数器是否大于5,然后使用goto
来中断FOR
命令。否则,如果文件有数百行g代码正在浪费时间处理所有额外的行。您是否打算让它运行两次:PrintLines
?