4

我有这个脚本:

@ECHO OFF

(FOR /f tokens^=2^ delims^=^"  %%a IN ('findstr /l "\<SOMETHING=\>" FILE.vav') DO (Echo | Set /p =%%a,)) >> Results.txt

现在结果看起来像这样:

SOMETHING, SOMETHING, SOMETHING, SOMETHING, SOMETHING, SOMETHING, SOMETHING, SOMETHING, SOMETHING, SOMETHING, SOMETHING, SOMETHING, SOMETHING, 

.但我需要在每 5 个结果后插入空行,因此结果应如下所示:

SOMETHING, SOMETHING, SOMETHING, SOMETHING, SOMETHING,
//blank line
SOMETHING, SOMETHING, SOMETHING, SOMETHING, SOMETHING,
// blank line
SOMETHING, SOMETHING, SOMETHING, 

可能解决方案将使用FOR /Land IF,但我无法弄清楚。

4

2 回答 2

3

试试这个:

ECHO OFF &SETLOCAL 
(FOR /f tokens^=2^ delims^=^"  %%a IN ('findstr /l "\<SOMETHING=\>" FILE.vav') DO (
    <NUL Set /p =%%a,
    SET /a counter+=1
    SETLOCAL ENABLEDELAYEDEXPANSION
    SET /a counter%%=5
    IF !counter! equ 0 ECHO(
    ENDLOCAL 
    )
)>Results.txt
TYPE results.txt
于 2013-07-23T14:11:17.933 回答
0

由于标题以更笼统的方式吸引了提问者

比这里介绍的(Endoro 完美回答)

我想展示一个在读取的文件中插入空行的解决方案:

@Echo off&SetLocal EnableDelayedExpansion
Set "File=%~1" & If not defined File (Echo No file name passed&Pause&Exit /B 1)
Set n=2
for /F "delims=" %%A in (
    'Findstr "^" %FILE%'
) do (
    Echo:%%A
    set /A "#+=1,#%%=n" & If !#!==0 Echo:
)

还有一个非常相似的命令,它处理另一个命令的输出,
这里sc由 a 过滤findstr

@Echo off&SetLocal EnableDelayedExpansion
Set n=2
for /F "delims=" %%A in (
  'sc query ^| findstr "SERVICE_NAME DISPLAY_NAME"'
) do (
   Echo:%%A
   set /A "#+=1,#%%=n" & If !#!==0 Echo:
)
  • 变数n是不言而喻的。
  • 不寻常但合法的变量#计数行,是除以的模数n,如果为零,则插入所需的空白行。
  • 由于EnableDelayedExpansion !输出中的感叹号被删除。
于 2017-08-17T17:49:16.640 回答