如何比较Windows批处理脚本中的文件格式

时间:2013-10-25 14:04:54

标签: batch-file batch-processing batch-updates

我有文件名列表,其中包含.xml,.css,.js,.jsp,.java等。我想要一个代码,只有当该文件具有.js或.jsp或时,才能执行您的函数。 java扩展。我不知道如何检查if语句中的多重条件。这就是为什么要添加OR ... kindly帮助我...谢谢你

   FOR /F "delims=#" %%A in (demo.txt) do (

    IF [/I] %%~xA==".js" OR %%~xA==".css" OR %%~xA==".java"

    (

    echo correct format

    )

    ELSE

    (

    ECHO incorrect format

    ) 

)

4 个答案:

答案 0 :(得分:1)

创建一个包含所有有效扩展名列表的变量。请务必在末尾添加一个额外的点,以便所有扩展都用点括起来。然后对于每个值,尝试搜索并替换列表,用任何内容替换找到的扩展名(加点)。如果结果与原始列表不同,则扩展名有效。

@echo off
setlocal enableDelayedExpansion
set "formats=.css.js.jsp.java."
for /f "delims=#" %%A in (demo.txt) do (
  if "!formats:%%~xA.=!" neq "!formats!" (
    echo %%~xA is correct format
  ) else (
    echo %%~xA is incorrect format
  )
)

有关实现OR逻辑的其他方法,请参阅IF… OR IF… in a windows batch file

答案 1 :(得分:1)

    setlocal enableDelayedExpansion
    FOR /F "delims=#" %%A in (demo.txt) do (
      set "format=incorect"
      for %%E in (.js;.java;.jsp;.css) do (
         if "%%~xA" == "%%~E" (         
           set "format=correct"
         )
      )
      if "!format!" equ "correct" (
        echo correct format
      ) else (
        echo incorrect format
      )

    )
   endlocal

答案 2 :(得分:1)

如果文件列表在demo.txt中,如OP

所示
for /F "tokens=*" %%f in ('type demo.txt ^| findstr /i /e ".js .java .jsp"') do (
    rem here what needs to be done
    echo %%f
)

如果目录中有文件,请将type demo.txt替换为dir /b ....,调整要处理的目录。

答案 3 :(得分:0)

试试这个:

@ECHO OFF &SETLOCAL
for /f "delims=#" %%a in (demo.txt) do (
    set "flag="
    if /i "%%~xa"==".js" set "flag=true"
    if /i "%%~xa"==".css" set "flag=true"
    if /i "%%~xa"==".java" set "flag=true"
    if defined flag (echo %%~xa is valid) else echo %%~xa is not valid
)