批处理脚本:检查VALID或INVALID输入

时间:2016-01-27 01:06:57

标签: windows batch-file cmd

我需要一个输出来检查记事本中输入的数据是否有效或无效。如果组名包含字符串" APP_FRA"。

,则该组名将被视为有效

需要输出:

  

无效 - DVA_UA_ZETAFAXFAXCLIENT_2014_01-T000

     

有效 - APP_FRA_WFL_PEL_CIM_DK_ICG_SEPA

     

有效 - APP_FRA_WFL_PEL_CIM_NO_ICG_SEPA

     

无效 - DVA_UA_THOMSNONESMRT_57_00-T000

     

无效 - XSP_XA_LIBREOFFICECFG_50_00

==========================================

这就是我的所作所为:

@echo off

SETLOCAL DISABLEDELAYEDEXPANSION

for /F %%i in (File.txt) do (

    set "f1=%%i"
    if "%f1%"=="%f1:APP_FRA=%" (
    echo Valid - %%i
) else (

    echo Invalid - %%i
))

==========================================

我总是得到这个输出:

  

无效 - DVA_UA_ZETAFAXFAXCLIENT_2014_01-T000

     

无效 - APP_FRA_WFL_PEL_CIM_DK_ICG_SEPA

     

无效 - APP_FRA_WFL_PEL_CIM_NO_ICG_SEPA

     

无效 - DVA_UA_THOMSNONESMRT_57_00-T000

     

无效 - XSP_XA_LIBREOFFICECFG_50_00

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

由于您在for循环内创建变量,实际上您希望启用延迟扩展,然后对变量使用!variable!命名约定在循环内创建并与之交互。

此外,您当前的逻辑表明,如果字符串包含字符串APP_FRA,则该字符串被视为有效,这与您要求的字符串相反。

@echo off
setlocal enabledelayedexpansion

for /F %%i in (File.txt) do (

    set "f1=%%i"
    if not "!f1!"=="!f1:APP_FRA=!" (
        echo Valid - %%i
    ) else (
        echo Invalid - %%i
    )
)