我使用的批处理脚本包含以下代码:
@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!
,如果它包含11
或22
或55
...我需要它只跳过那些值(相同)并继续处理echo.
文本文件中与两个循环不相同的剩余值。
答案1
当然,你可以使用一些简单的条件IF NOT
FOR /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
))