如何在批处理文件中使用OR语句?

4

你好,我想在批处理文件中排除两个或更多的文件。

我的批处理文件执行该文件夹中的所有SQL文件。

以下是代码:

ECHO %USERNAME% started the batch process at %TIME% >output.txt 

FOR %%G IN (*.sql) DO (
//IF would go here to skip unwanted files
sqlcmd.exe  -S RMSDEV7 -E   -d ChaseDataMedia7 -i "%%G" >>output.txt
)

pause

那么,我该如何添加if语句来跳过我不想执行的循环中的文件呢?

Q&D 但另一种选择可能是在循环之前重命名两个文件,然后恢复它们。 - Lieven Keersmaekers
@Lieven 可行,但我不想每天删除和恢复20次,并希望其他开发人员只需运行批处理文件。无需担心删除和恢复。 - Willem
2个回答

4

您可以连接多个IF语句;

FOR %%G IN (*.sql) DO (
   if not %%G==foo.sql if not %%G==bar.sql (
      some command "%%G"
   )
)

2
@echo off
setlocal EnableDelayedExpansion
set unwantedFiles=foo bar baz
for %%g in (*.sql) do (
   set "test=!unwantedFiles:%%~Ng=!"
   if "!test!" == "!unwantedFiles!" (
      echo %%~Ng.sql is not unwanted, process it:
      echo Process with %%g
   )
)

取一个名称并通过删除当前名称来复制unwantedFiles。如果结果与之前相同,则此名称不在unwantedFiles中,因此可以处理它...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接