使用 for 循环打印值,但不使用 findstr 命令过滤某些值

使用 for 循环打印值,但不使用 findstr 命令过滤某些值

我使用的批处理脚本包含以下代码:

@echo off & setLocal enableDELAYedeXpansioN

for /L %%a in (0 1 10) do (
for /L %%b in (1 1 10) do (
set X=%%a%%b
echo. !X!
)) >>newfile.txt

rem ----> findstr /V "11 22 33 44 55 66" ABCD.txt > outfile.txt

以下是上述文件的输出

11
12
13
.
.
.
98
99

我的问题是,当第一个循环和第二个循环变量相同时,我不想在文本文件中看到相同的重复数字或值,如(11,22,33....)。

我可以将findstr命令放入混合中(在脚本中注释掉)以在第二个新文本文件中进行过滤,但我想看看是否仅使用 for 循环就可以做到这一点?

我的意思echo. !X!是显示结果,我想添加!X!另一个 for 循环来检查!X!,如果它包含112255...我需要它只跳过那些值(相同)并继续处理echo.文本文件中与两个循环不相同的剩余值。

答案1

当然,你可以使用一些简单的条件IF NOTFOR /L并告诉它如果的第一个变量%%a等于的第二个FOR /L变量的值,%%b则不echo到输出文件。

我还将>>附加重定向放到循环内的echo变量中%X%,以确保它按照您的预期附加到循环中的正确值。此外,我将初始逻辑放在顶部,IF EXIST newfile.txt DEL /Q /F newfile.txt因此如果它在运行之前存在,则会首先删除它。

@ECHO ON
setlocal enabledelayedexpansion

IF EXIST newfile.txt DEL /Q /F newfile.txt
for /L %%a in (0 1 10) do ( 
    for /L %%b in (1 1 10) do ( 
        IF NOT %%a==%%b set X=%%a%%b
        echo. !X! >>newfile.txt
)) 

示例输出


更多资源

相关内容