Shorter Script for check pings and disable or enable routes

How can i use shorter script than this ?
Thank you very much

 :if ([/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.40 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.42 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.44 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.46 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.48 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.50 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.52 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.54 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.56 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.58 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.60 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.62 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.64 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.66 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.68 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.70 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.72 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.74 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.76 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.78 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.80 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.82 count=1] = 1 ||
 [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.84 count=1] = 1) do={
            /ip route set [/ip route find comment="Default-Route-->L1"] disabled=yes;
            :delay 15s;
            /ip route set [/ip route find comment="Default-Route-->L1"] disabled=no;
            :delay 15s;
        } else {
        :if ([/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.38 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.42 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.44 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.46 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.48 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.50 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.52 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.54 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.56 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.58 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.60 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.62 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.64 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.66 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.68 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.70 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.72 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.74 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.76 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.78 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.80 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.82 count=1] = 1 ||
 [/ping 10.0.1.40 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.84 count=1] = 1) do={
            /ip route set [/ip route find comment="Default-Route-->L2"] disabled=yes;
            :delay 15s;
            /ip route set [/ip route find comment="Default-Route-->L2"] disabled=no;
            :delay 15s;
        }
       }

My script to check if router can reach GoogleDNS and log the ping result.
Global GoogleUp variable holds the current state.

:local ServerGoogle   "8.8.8.8"

:local i 0
:local F 0
:local LinkChanged
:local PingOK
:global GoogleUp

:if ([:typeof $GoogleUp] = "nothing") do={:set GoogleUp false}

# PING host 5 times delay 4s
:for i from=1 to=5 do={
  if ([/ping $ServerGoogle count=1 interval=4s]=0) do={:set F ($F + 1)}
};
:set PingOK (!($F=5))
# If links are down and all replies are timedouted, then link is considered down
:set LinkChanged (($GoogleUp and !$PingOK) or (!$GoogleUp and $PingOK))
:set GoogleUp $PingOK
:if ($LinkChanged) do={
  :local komunikat "GOOGLE: $[/system identity get name], $[/system clock get time], $[/system clock get date], $[/ip address get [find interface=ETH1-WAN] address] - "
  :if ( $GoogleUp ) do={
    :set komunikat ($komunikat . "UP")
  } else={
    :set komunikat ($komunikat . "DOWN")
  }
  :log info $komunikat
}

Thanks for your reply but it is not the things that i need .

Why not ? Change the for loop…I am writing this without checking but please just follow the idea…look at $i in 10.0.1.$i

:for i from=40 to=84 step=2  do={
  if( [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.$i count=1] = 1 ) do={
  # increment here some counter variable, lets say RouteL1
  }
};
if( $RouteL1 is not what you expect ) do={
  # action for RouteL1
}
......etc....

Thank you very much i will check and reply back.

You can also make an array of hosts’ addresses to ping in the script or in “/ip firewall” and then traverse it with

 	:foreach <var> in=<array> do={ <commands> };

instead of calculated for loop.

I made script like this but does not work . could you please check why ?
Thanks for your help

:for i from=40 to=84 step-2  do={
  if( [/ping 10.0.1.38 count=1] = 1 && [/ping 192.168.9.12 count=1] = 1  && [/ping 10.0.1.$i count=1] = 1 ) do={
            /ip route set [/ip route find comment="Default-Route-->L3"] disabled=no;
   } else {
            /ip route set [/ip route find comment="Default-Route-->L3"] disabled=yes;
    }
  }
};

Sorry for my syntax mistakes but it was just the idea…too many perenthesis, bad :if syntax, wrong ping invocation…this snippet works so please modify it to your needs

:local i 0;
:for i from=4 to=16 step=4 do={
  :log info "192.168.$i.1"
  :if ( [/ping "192.168.$i.1" count=1]=1 ) do={
          :log info ("OK");
  } else={
         :log info ("NOT OK");
  }
};

Thank you very much and it is work fine and now i have another request , how can i short this script :

Government in my country drop routes each 15 second so i need change my routes every 15 seconds and this script work fine but the problem is i have 30 route and in script section i can use 10 routes as limitation of script section in mikrotik , So if you can please help me .

And if you can .i need a script that find only enable routes and when finds each 15 second change routes.

:if (([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L1" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L2" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L3" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L4" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L5" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L6" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L7" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L8" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L9" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L10" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0)) do={
   /ip route { disable [find comment="Default-Route-->L11"]};
   :delay 15s;
   /ip route { enable [find comment="Default-Route-->L11"]};
   :delay 15s;
} else {
:if (([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L1" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L2" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L3" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L4" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L5" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L6" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L7" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L8" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L9" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L10" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0)) do={
   /ip route { disable [find comment="Default-Route-->L12"]};
   :delay 15s;
   /ip route { enable [find comment="Default-Route-->L12"]};
   :delay 15s;
} else {
:if (([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L1" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L2" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L3" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L4" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L5" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L6" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L7" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L8" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L9" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L10" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0)) do={
   /ip route { disable [find comment="Default-Route-->L13"]};
   :delay 15s;
   /ip route { enable [find comment="Default-Route-->L13"]};
   :delay 15s;
} else {
:if (([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L1" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L2" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L3" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L4" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L5" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L6" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L7" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L8" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L9" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L10" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0)) do={
   /ip route { disable [find comment="Default-Route-->L14"]};
   :delay 15s;
   /ip route { enable [find comment="Default-Route-->L14"]};
   :delay 15s;
} else {
:if (([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L1" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L2" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L3" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L4" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L5" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L6" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L7" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L8" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L9" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L10" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0)) do={
   /ip route { disable [find comment="Default-Route-->L15"]};
   :delay 15s;
   /ip route { enable [find comment="Default-Route-->L15"]};
   :delay 15s;
} else {
:if (([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L1" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L2" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L3" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L4" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L5" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L6" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L7" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L8" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L9" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L10" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0)) do={
   /ip route { disable [find comment="Default-Route-->L16"]};
   :delay 15s;
   /ip route { enable [find comment="Default-Route-->L16"]};
   :delay 15s;
} else {
:if (([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L1" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L2" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L3" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L4" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L5" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L6" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L7" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L8" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L9" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L10" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0)) do={
   /ip route { disable [find comment="Default-Route-->L17"]};
   :delay 15s;
   /ip route { enable [find comment="Default-Route-->L17"]};
   :delay 15s;
} else {
:if (([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L1" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L2" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L3" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L4" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L5" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L6" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L7" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L8" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L9" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L10" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L11" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L13" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L14" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L15" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L16" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L18" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L17" and !disabled]] > 0)) do={
   /ip route { disable [find comment="Default-Route-->L18"]};
   :delay 15s;
   /ip route { enable [find comment="Default-Route-->L18"]};
   :delay 15s;
}}}}}}}}}}}}}}

OMG…my eyes… :smiley:
First of all use variables for constant strings and rewrite the script…will be smaller and more readable…do like this:

..............
([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L1" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L2" and !disabled]] > 0) || ([:len [/ip route find comment="Default-Route-->L12" and !disabled]] > 0) && ([:len [/ip route find comment="Default-Route-->L3" and !disabled]] > 0)........

to

..........
:local dfL1 "Default-Route-->L1";
:local dfL2 "Default-Route-->L2";
:local dfL3 "Default-Route-->L3";
:local dfL12 "Default-Route-->L12";
..........................
([:len [/ip route find comment=$dfL12 and !disabled]] > 0) && ([:len [/ip route find comment=$dfL1 and !disabled]] > 0) ||
([:len [/ip route find comment=$dfL12 and !disabled]] > 0) && ([:len [/ip route find comment=$dfL2 and !disabled]] > 0) ||
([:len [/ip route find comment=$dfL12 and !disabled]] > 0) && ([:len [/ip route find comment=$dfL3 and !disabled]] > 0).........

and next if default route L12 is not changed in the background during evaluation of this long “if” you could do

...............
:local check_dfL12 ([:len [/ip route find comment=$dfL12 and !disabled]] > 0);
.......
   $check_dfL12 && ([:len [/ip route find comment=$dfL1 and !disabled]] > 0) ||
   $check_dfL12 && ([:len [/ip route find comment=$dfL2 and !disabled]] > 0) ||
   $check_dfL12 && ([:len [/ip route find comment=$dfL3 and !disabled]] > 0).........

and it shows that you are evaluating && and || without parenthesis grouping particular checks so I do not know what the expected effect is ?

Really thank you very much . Really saved me .

Dear BartoszP
Hope so you are fine
I wrote his code and the problem is no address was specified
could you please write me whats the problem and how can i fix it .
Really Thank you very much

:local RdfL0 192.168.1.12;
:local RdfL1 10.0.1.2;
:local RdfL2 10.0.1.4;
:local dfL1 "Default-Route-->L1";
:local dfL2 "Default-Route-->L2";
:if ( [/ping $RdfL1 count=1] = 0 && [/ping $RdfL0 count=1] = 1 || [/ping $RdfL1 count=1] = 1 && [/ping $RdfL0 count=1] = 0 ) do={
/ip route set [/ip route find comment=$dfL1] disabled=yes;
:if ( [/ping $RdfL2 count=1] = 0 && [/ping $RdfL0 count=1] = 1 || [/ping $RdfL2 count=1] = 1 && [/ping $RdfL0 count=1] = 0 ) do={
/ip route set [/ip route find comment=$dfL2] disabled=yes;
}}

Which part does not work ? :if test ? Nested if ? Route change ? Are pings working ?
Use :log to check which path is executed.

EDIT:
I have written already that your :if test does not use () so it is evaluated from left to right and I do not know if it is proper or not
as “current” result is ored or anded with next check so the result is “cumulating” from left to right.