批处理脚本 - 错误如果语法

问题描述:

我想检查我创建的数组中的文本,如果我不使用“如果”每件事情都有效,我可以使用“回声”,但是当我添加“if”命令时“错误的语法”批处理脚本 - 错误如果语法

@echo off 
setlocal ENABLEDELAYEDEXPANSION 

set i=0 

for /f "delims= " %%a in ('command') do (

set /A i+=1 
set list[!i!]=%%~a 
) 

set Filesx=%i% 

rem Display array elements 
for /L %%i in (1,1,%Filesx%) do (
    if list[%%i] =="some ttext" 
     echo !list[%%i]! 
) 
+0

不应该在'echo!list [%% i]!'命令周围出现括号吗? – melpomene

+0

不这么认为,无论如何,我加了他们,结果是一样的 – user2420171

我会考虑相应地改变你的脚本:

@Echo Off 
SetLocal EnableDelayedExpansion 

Set "i=0" 
For /F %%A In ('command') Do (Set/A i+=1 
    Set list[!i!]=%%~A) 

Rem Display array elements 
For /L %%A In (1,1,%i%) Do If /I "!list[%%A]!"=="some ttext" Echo !list[%%A]! 

Pause 

在你的脚本,你需要更改if list[%%i]If /I "!list[%%i]!"

@echo off 
setlocal ENABLEDELAYEDEXPANSION 

set i=0 

for /f "delims= " %%a in ('command') do (

    set /A i+=1 
    set list[!i!]=%%~a 
) 

set Filesx=%i% 

rem Display array elements 
for /L %%i in (1,1,%Filesx%) do (
    if /i "!list[%%i]!" =="some ttext" (
     echo !list[%%i]! 
    ) 
) 

if语句需要一个确切的匹配(为==equ),所以如果你引用一个方面,你需要引用其他。

另外,对于是否真状态的动作一定要在同一个物理线为if

+0

试过了,仍然不是 – user2420171

+0

和我的附录......? – Magoo