Cheque Múltiplo se as condições em arquivo de morcego / e operador em morcego

2

Eu quero algo assim: - if %ERRORLEVEL% GEQ 1 && %ERRORLEVEL% neq 255 GOTO Not closed by user . Mas esta sintaxe não está funcionando.

    
por Deb 16.01.2014 / 18:24

2 respostas

3

E isso? XP ou superior exigido, claro ...

if %errorlevel% GEQ 1 (
  if %errorlevel% NEQ 255 goto :NotClosed
  ::other statements go here, if you need 'em
  ::don't forget to close the parenthesis on the last statement ->)

Para esclarecer mais:

if %errorlevel% EQU 0 (
  ::commands you want to perform if 0 go here. Notice ->) 
else (
  ::We got here because errorlevel was GEQ 1 or less than one...watch out
  ::if you program returns negative errorlevels!
  if %errorlevel% NEQ 255 goto :NotClosed
  ::other statements go here. But don't forget the parenthesis ->)
    
por 16.01.2014 / 18:36
1

Para completar, aqui está uma resposta para TCC / LE da JP Software (um interpretador de comandos que também pode executar tais scripts), que suporta a sintaxe da resposta de JSanchez, para compatibilidade com versões anteriores, mas também possui duas alternativas melhores.

As alternativas são…

… seu próprio comando iff de várias linhas

iff %ERRORLEVEL% GE 1 then
  iff %ERRORLEVEL% NE 255 then
     goto :NotClosedByUser
  endiff
endiff

Com iff , não há as advertências sobre a ocorrência de expansão de variável "cedo demais" que se tem com comandos compostos entre parênteses.

… expressões compostas com operadores lógicos

if %ERRORLEVEL% GE 1 .and. %ERRORLEVEL% NE 255 goto NotClosedByUser

Isso tem a vantagem de ser quase idêntico ao que você queria na pergunta. O TCC suporta até GEQ e NEQ para compatibilidade. Sim, não requer os dois pontos no comando goto .

Leitura adicional

por 18.01.2014 / 13:35