0

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

   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

4 回答 4

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
于 2013-10-25T14:18:09.850 回答
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
  )
)

请参阅Windows 批处理文件中的 IF... OR IF... 以了解实现 OR 逻辑的其他方法。

于 2013-10-25T14:16:47.243 回答
1

如果 OP 指示的 demo.txt 中的文件列表

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.txtdir /b ....调整要处理的目录。

于 2013-10-25T14:26:04.267 回答
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
)
于 2013-10-25T18:58:56.877 回答