gpt4 book ai didi

windows - 在 'for findstr' 循环中时的“if errorlevel”语句

转载 作者:可可西里 更新时间:2023-11-01 11:53:22 27 4
gpt4 key购买 nike

我一直没有成功让下面的工作。一切正常,直到我尝试在“for”循环中获取“findstr”的结果。也许有更好的方法:在 masters.csv 文件中查找 %subnet%。如果找到它,则将 MSS 变量设置为“for”的结果值。如果找不到值,它将分配一个静态值(孤儿)。在此先感谢您的帮助!!

for /f "tokens=1-2 delims=:" %%a in ('ipconfig^|find "IPv4"') do set ip=%%b
set ip=%ip:~1%
echo %ip% > ipaddress.txt
pause
for /F "tokens=1-3 delims=." %%a in ("%ip%") do set FirstThreeOctets=%%a.%%b.%%c
@REM echo First three: %FirstThreeOctets%
@echo off
setlocal
set subnet=%FirstThreeOctets%
echo %subnet%
for /f "tokens=2 delims=," %%A in ('findstr /r "^%subnet%," "\\server\APPS\appname\updates\masters.csv"') do goto OrphanCheck
@REM if errorlevel ==1 goto Orphan do set MSS=%%A
@REM echo %MSS%
@REM goto 64installcheck
:OrphanCheck
if errorlevel==1 goto Orphan
Goto NoOrphan
:NoOrphan
set MSS=%%A
Goto 64installcheck
:Orphan
set MSS=ORPHAN
echo %MSS%
pause

最佳答案

当你运行时

for /f "tokens=2 delims=," %%A in (
'findstr /r "^%subnet%," "\\server\APPS\appname\updates\masters.csv"'
) do goto OrphanCheck

可能会发生两件事。

如果 findstr 没有找到字符串,则 for 循环中的代码不会执行并到达下一行,但是这一行无法访问 findstr< 生成的错误级别,它会看到 for 命令的错误级别 (?)。

如果 findstr 找到字符串,则执行 goto 但会发生相同的情况。

当到达检查错误级别的行时,会出现另一个问题

if errorlevel==1

是一个有效的构造,但它并没有按照它的要求去做。它正在测试字符串 errorlevel 是否等于字符串 1。正确的语法应该是

if errorlevel 1 ....

if %errorlevel%==1

但如前所述,当达到该行时,错误级别将不会反射(reflect) findstr 命令的错误。

三行之后是下一个错误。

set MSS=%%A

一旦 for 命令结束,其可替换参数就没有任何值。

对于您的代码的简化版本

for /f "tokens=3-6 delims=.: " %%a in ('ipconfig ^| find "IPv4"') do (
set "ip=%%a.%%b.%%c.%%d"
set "subnet=%%a.%%b.%%c"
)

>"ipaddress.txt" echo %ip%

for /f "tokens=2 delims=," %%a in (
'findstr /b /c:"%subnet%," "\\server\APPS\appname\updates\masters.csv"'
) do (
set "MSS=%%a"
goto 64installcheck
)

set "MSS=ORPHAN"
echo %MSS%
pause

关于windows - 在 'for findstr' 循环中时的“if errorlevel”语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23766049/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com