我正在尝试修改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).
因此,如果有任何可能忽略或做“期望”(如数据库:所有这一切都期望),我将不胜感激。
答案 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
个文件。