2013-10-25 94 views
0

我有一個文件名列表,其中包含.xml,.css,.js,.jsp,.java等。我想要一個代碼,只有當這個代碼允許你執行文件有.js或.jsp或.java擴展名。我不知道如何檢查if語句中的多重條件。這就是爲什麼作爲OR..kindly幫助me..Thank你如何比較windows批處理腳本中的文件格式

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 

    ) 

) 

回答

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 
) 
) 

請參閱IF… OR IF… in a windows batch file瞭解其他實現OR邏輯的方法。

+0

比我嘗試簡單+ 1 – npocmaka

+0

太感謝你了......你的代碼運行perfectly..Thanks很多:) – user2918831

+0

@ user2918831 - 不要忘了接受的答案。如果它完全回答你的問題,你會發現最有用的。只需點擊anser左上角的複選標記即可。那個動作讓別人知道這個問題已經回答,給你2點聲望點,獎勵答案海報15點。每個問題只能接受一個答案。一旦你達到15個重要點,你將能夠投票任何你認爲有用的答案,包括解答其他人的問題。 – dbenham

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 
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 
) 

表示如果在目錄中的文件,與dir /b ....調整處理目錄替換type demo.txt

+0

你需要跳過管道 – npocmaka

+0

和'findstr/i/e/c:「jsp」/ c:「java」...' – npocmaka

+0

已更正。從命令行復制並粘貼,我忘記糾正它。 –

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 
)