2012-01-13 2 views
4

Привет, я хочу исключить 2 или более файлов из моего командного файла.Как сделать инструкцию OR в пакетном файле?

Мой командный файл выполняет все файлы 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 

Итак, как бы я добавить, и если statemant пропустить файлы в цикле, что я не хочу, чтобы выполнить?

+0

Вопросы и ответы, но другой вариант может заключаться в том, чтобы переименовать оба файла перед вашим циклом и восстановить их впоследствии. –

+0

@Lieven Жизнеспособный, но я не хочу удалять и восстанавливать 20 раз в день и хочу, чтобы другие разработчики просто запускали командный файл. Не нужно беспокоиться об удалении и восстановлении. – Willem

+1

Возможный дубликат [Логические операторы ("и", "или") в партии DOS] (http://stackoverflow.com/questions/2143187/logical-operators-and-or-in-dos-batch) –

ответ

4

Вы можете связать IFs;

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

+1 Снова я чему-то научился, и день еще молод :) –

+0

Спасибо, работает как шарм. знак равно – Willem

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 путем удаления текущего имени. Если результат такой же, как и раньше, это имя НЕ находится в нежелательных файлах, поэтому обрабатывайте его ...