batch file - Unable to concatenate strings separated by comma -
i'm being driven crazy stupidly simple problem eating time. want append strings separated comma, comma doesn't appended. below batch file snippet:
set missingparams= set switchurl= set truststore= if 0%switchurl%==0 (set missingparams=switchurl) if 0%truststore%==0 ( if not 0%missingparams%==0 ( set missingparams=%missingparams%, ) set missingparams=%missingparams%truststore ) after runnin script when echo %misingparams%, expected value switchurl,truststore prints
switchurltruststore.
d:\deleteme>echo %missingparams% switchurltruststore for debugging, when introduced echo statements in batch file, results more bizzare:
set missingparams= if 0%switchurl%==0 (set missingparams=switchurl) if 0%truststore%==0 ( if not 0%missingparams%==0 ( echo missingparams=%missingparams% set missingparams=%missingparams%, echo missingparams=%missingparams% ) set missingparams=%missingparams%truststore echo missingparams=%missingparams% ) when run above script prints
missingparams=switchurl missingparams=switchurl missingparams=switchurl and when echo value command prompt, before switchurltruststore
d:\deleteme>echo %missingparams% switchurltruststore does have ideas? frustrating me no end.
this standard parenthesis/delayedexpansion problem.
the simple rule %var% expanded before parenthesis block executed(while parsing).
if need var-expansion later, should use delayed expansion.
explained in set /?
setlocal enabledelayedexpansion set missingparams= set switchurl= set truststore= if 0!switchurl!==0 (set missingparams=switchurl) if 0!truststore!==0 ( if not 0!missingparams!==0 ( set missingparams=!missingparams!, ) set missingparams=!missingparams!truststore )
Comments
Post a Comment