"忽略"批量文件

时间:2014-07-14 18:46:23

标签: batch-file

我正在尝试修改https://code.google.com/p/protoc-gen-docbook/

中的批处理代码

在这个批处理文件中,这是一个FOR循环,用于检查文件夹中的文件是否以.proto(他们这样做)结尾。因此,它将运行所有这些proto文件并在pdf文件中打印内容。

我的问题是我希望批处理脚本忽略X.proto,因为它的内容并不重要。我不希望它从文件夹中删除,因为Y.proto使用来自X.proto的东西,如果我删除了X.proto,我的批处理将无法工作,因为它找不到X.proto文件。 / p>

所以我想知道是否有可能忽略某个文件但仍然可以复制Y.proto和Z.proto中的所有内容?如果是,我如何用批处理脚本编写它?

这就是FOR循环的样子:

for /R . %%f in (*.proto) do (
set B=%%f
call :concat_files !B:%CD%\=!
)
::echo proto_files = %proto_files% 

我在IF之前添加了SET语句,尝试了一下:

IF NOT "%%~nf"=="descriptor.proto" echo %%~nf

我一直在想的另一种方法是在FOR循环中执行类似的操作:

(*proto && !X.proto) <--(something like take all protos and/but not X.proto).

因此,如果有任何可能忽略或做“期望”(如数据库:所有这一切都期望),我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用IF命令跳过x.proto文件:

FOR /R . %%f IN (*.proto) DO (
    IF NOT "%%~nf"=="x" (
        REM Do your stuff here
    )
)

命令IF NOT "%%~nf"=="x"仅将文件名(不带扩展名)与x进行比较,并且只有在名称不匹配时才会执行代码块。您不需要比较扩展名,因为您只在*.proto过滤器中包含FOR个文件。