循环遍历扩展名为.jar的文件[批量]

时间:2016-01-23 12:36:23

标签: batch-file

所以,我有一些代码,这在理论上可行,但它并没有...... 它遍历一些文件,但不是全部,但不是我希望它循环的特定文件类型(.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
    )
)

1 个答案:

答案 0 :(得分:2)

变化

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

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

三个问题:

1)文件名位于%%f,而不是%%i

2)在块语句(a parenthesised series of statements)中,解析整个块,然后执行然后。块中的任何%var%将在解析块时被该变量的值替换 - 在块执行之前 - 同样的事情适用于{{1 }}

在块语句FOR ... DO (block)中,应使用(a parenthesised series of statements)语句而不是断标签注释表单(REM),因为标签终止块,使:: comment混淆。< / p>

因此,cmd将在遇到IF (something) else (somethingelse)时使用%variables%的值执行。

解决此问题的两种常见方法是1)使用IF并使用setlocal enabledelayedexpansion代替!var!来访问已更改的%var%或2}值以进行调用一个子程序,用于使用更改的值执行进一步处理。

2)对于文件扩展名匹配但情况不同的情况,您可能需要var使if /i语句不区分大小写。