Jun 26, 2013

Pissed off because your batch code seems to change its execution flow suddenly?

Then, believe me, there's 90% chance you missed one or more parentheses in your IF or FOR clauses. Go and explode your packed one-liner to see if it's enclosed properly.
Bad...
for %%A in (%tokenchain%) do (for /f "tokens=1 delims=+" %%B in ("%%A") do (if "%%B"=="%sid_2_0%" (exit/b0))
...because it misses one parenthesis.
for %%A in (%tokenchain%) do (
 for /f "tokens=1 delims=+" %%B in ("%%A") do (
  if "%%B"=="%sid_2_0%" (
   exit/b0
  )
 )

Good:
for %%A in (%tokenchain%) do (
 for /f "tokens=1 delims=+" %%B in ("%%A") do (
  if "%%B"=="%sid_2_0%" (
   exit/b0
  )
 )
)
Pack it again as it's fine.
for %%A in (%tokenchain%) do (for /f "tokens=1 delims=+" %%B in ("%%A") do (if "%%B"=="%sid_2_0%" (exit/b0)))

No comments:

Post a Comment