Batch - przeniesienie parametru poza petlę for

0

Witam,
Modyfikuje kod pliku .bat i chcialbym, aby linia echo %%b | FINDSTR /I /C:"%3" byla wywolywana po za petla for (przed instrukcja if), jednak zmienna %%b jest widoczna tylko w tej petli.
Czy jest mozliwa jakas prosta modyfikacja, aby %%b moglo zostac odczytane po za petla for?

 
for /f "usebackq tokens=1,2 delims=:" %%a in (`nslookup %2`) do (
	echo %%a:%%b ^</br^> >> %opt%
	
	echo %%b | FINDSTR /I /C:"%3"
	)

if errorlevel 1 (
			echo ^<td class="tg-031s"^>NOT %3^</td^> >> %opt%
	 ) else (
			echo ^<td class="tg-031s"^>OK %3^</td^> >> %opt%
	 )
0

Specem od Windows Batch Scripting nie jestem ale we wskazanym kodzie pętla for dotyczy tylko %%a więc %%b dotyczyć będzie raczej innej pętli nie mniej jednak możesz spróbować stworzyć sobie zmienną globalną gdzie w pętli będziesz uzupełniał zmienną globalną wartością %%b i po pętli uruchomisz sobie

echo %glob_var% | FINDSTR /I /C:"%3"
0

Zrobilem tak jak ponizej i teraz tworzy sie plik "0" z zapisanym tym wyrzuca %%b
Natomiast teraz instrukcja if nie spelnia zadania poniewaz nigdy nie ma errorlevel 1
Chcialbym, aby za kazdym razem porownywane bylo %%b z %3 i jesli sa rozne to pokazywac blad (NOT) a jesli takie same OK

set zmienna=0 

for /f "usebackq tokens=1,2 delims=:" %%a in (`nslookup %2`) do (
	echo %%a:%%b ^</br^> >> %opt%
	echo %%b >> %zmienna%
	)

echo %zmienna% | FINDSTR /I /C:"%3"
if errorlevel 1 (
			echo ^<td class="tg-031f"^>NOT %3^</td^> >> %opt%
	 ) else (
			echo ^<td class="tg-031s"^>OK %3^</td^> >> %opt%
	 )
0

Ech popatrz na to z punktu widzenia logiki. Skoro %%b dotyczy pętli i chcesz sprawdzić każdą wartość %%b to nie może być sprawdzenia poza pętlą, no chyba, że wszystkie wartości %%b wrzucisz do jakieś tablicy i zrobisz potem sprawdzenie w oparciu o wszystkie elementy tablicy (co jest bez sensu bo masz dwa razy tą samą pętlę).

1 użytkowników online, w tym zalogowanych: 0, gości: 1