2016-01-23 127 views
0

所以,我已經有了一些代碼,這在理論上是可行的,但它不會.. 它循環遍歷一些文件,但不是全部,但不是特定文件類型我希望它遍歷(.jar)文件循環遍歷擴展名爲.jar的文件[批處理]

我:

for /r %%f in (*.jar) do (
    ECHO path=%%~pf 
    ECHO filename=%%~nf 
    ECHO fileextension=%%~xf 
    SET fileextension=%%~xi 
    IF "%fileextension%" == ".jar" (
     call proc %%f 
    ) 
) 

回答

2

變化

IF "%fileextension%" == ".jar" (

IF /i "%%~xf" == ".jar" (

三個問題:

1)的文件名是在%%f,不%%i

2)在塊語句(a parenthesised series of statements),所述整個塊被解析並然後執行。塊中的任何%var%將在塊被解析時由該變量的值取代 - 在塊執行之前 - 同樣的事情適用於FOR ... DO (block)

在一個塊內聲明(a parenthesised series of statements)REM語句,而不是破碎的標籤備註形式(:: comment)應該被使用,因爲標籤終止塊,混淆cmd

因此,在遇到IF時,將使用%variables%的值執行IF (something) else (somethingelse)。克服這個

兩種常用方法是:1)使用setlocal enabledelayedexpansion並使用!var!代替%var%訪問的var改變的值或2),以調用一個子程序使用改變的值來執行進一步的處理。

2)對於文件擴展名匹配但情況不同的情況,您可能需要if /i以使if語句不區分大小寫。

+0

沒有工作,但我只是很快編寫了一個java類來爲我執行命令。 Ezpz xP謝謝反正! <3 –