2016-01-23 137 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 –