使用 .txt 文件中的批处理脚本在每 2 行之后需要一个空格

问题描述 投票:0回答:2

我需要帮助来提供在 .txt 文件中每 2 行后面包含一个空格的输出,其中包含行数,中间没有任何空格。

示例:

假设 .txt 文件名为 media.txt 包含以下输入

A
B
C
D
.
.
.
Z

我想将上面的输入表示为输出,例如:

A
B
-----
C
D
----
E
F
----
.
.
.
.

我尝试使用奇偶概念,但未能在上述输出中表示。

这里是我的批处理脚本代码:

set flag=1
for /f "tokens=2 delims==" %%a in ('type media.txt^|findstr "output"') do (
  if %flag%%%2==0 (
    echo %%a
  ) else (
    echo.
    echo ------------------
    echo %%a
    set flag+=1    
  )
)

请告诉我,我哪里做错了..

windows for-loop batch-file cmd
2个回答
3
投票

这可以通过 PowerShell 在批处理文件或 cmd 中轻松完成。如果您使用的是受支持的 Windows 系统,则可以使用 PowerShell。

powershell -NoLogo -NoProfile -Command ^
  "Get-Content .\media.txt -ReadCount 2 | ForEach-Object { $_; Write-Output '----' }"

1
投票

您不能将 if 与模数一起使用,并且变量周围没有 %,并且您无法在没有延迟扩展或其他一些环的情况下检查循环中变量的当前值。

这应该可以满足需要。

@(SETLOCAL ENABLEDELAYEDEXPANSION
  ECHO OFF
  SET /A "Flag=0"
  SET /A "Mod=3"
)

CALL :Main

( ENDLOCAL
EXIT /B
)

:Main
  For /f "tokens=2 delims==" %%_ in ('
    Type media.txt^|findstr "output"
  ') do (
  SET /A "flag= (flag + 1) % mod"
  IF !flag! == 0 (
    echo.
    echo.------------------
  ) 
 echo.%%_
)
© www.soinside.com 2019 - 2024. All rights reserved.