首页 > 解决方案 > 如何将要在批处理文件中跳过的行数增加 1?

问题描述

@echo off
cls
setlocal EnableDelayedExpansion

set "cmd=findstr /R /N "^^" Contas.csv | find /C ":""


for /f %%a in ('!cmd!') do set number=%%a




set /A number=%number%-1

对于每个交互,我希望它增加 1 跳过(从 1 开始,然后是 2、3、4、5 ...)

for /f "skip=1" %%U IN (Contas.csv) DO (
if not defined line set "line=%%U" 
echo !line!

pause
)

标签: batch-file

解决方案


根据您的评论,并且SendKey不是批处理文件命令,这是我对我认为您需要的方法的解释:

@Echo Off
Set "cmnd="%__APPDIR__%find.exe" /V /N ""<"Contas.csv""
SetLocal EnableDelayedExpansion
For /F "Skip=1Tokens=1*Delims=]" %%G In ('"!cmnd!"')Do (
    Echo=%%H
    "%__APPDIR__%timeout.exe" 1 /NoBreak>NUL
)
EndLocal

我已经跳过了第一行,使用Skip=1我假设它是你的 header,(如果你不想跳过标题行,那么 remove Skip=1)。

此外,我习惯于Echo=输出每一行,包括任何空行,(您可能希望在SendKey此处使用)

最后我使用Timeout1第二个延迟,让您可以看到每行单独输出的效果(如果您不使用,则可能不需要Echo=


如果您也想包含记录编号,则需要对Delimsand进行小幅调整Echo=

@Echo Off
Set "cmnd="%__APPDIR__%find.exe" /V /N ""<"Contas.csv""
SetLocal EnableDelayedExpansion
For /F "Skip=1Tokens=1*Delims=[]" %%G In ('"!cmnd!"')Do (
    Echo %%G    %%H
    "%__APPDIR__%timeout.exe" 1 /NoBreak>NUL
)
EndLocal


在这两种情况下,如果您对使用健壮的代码不感兴趣,您可以更改"%__APPDIR__%find.exe"Find"%__APPDIR__%timeout.exe"Timeout


推荐阅读