I have two batch files which is used to run a large c+_+ build, the first one starts the processes, creating directories and figuring out what to send to the second script. If certain information is presented to the first script, I have a routine that pops up a window and asks for a password. This is passed to the second script by calling the second script like this
call script2.bat -pw:myPassword
where myPassword is something the user entered. now, i have been testing this script and one of my users password contains a semicolon, so we get this
call script2.bat -pw:my;Password
I found by putting in quotes I can get this into the second script OK call script2.bat -pw:"my;Password"
However, the command line parsing breaks when I try to do this
for /F "tokens=1,2 delims=:" %%a in ( "%1" ) DO SET switch=%%a&value=%%b
if I echo %1 it shows like this
-pw:"my;Password"
But with echo on when the script runs I see
for /F "tokens=1,2 delims=:" %%a in ( "-pw:"my Password"" ) DO SET switch=%%a&value=%%b
and it parses as switch=-pw and value="my
What I eventually need is for value to contain my;Password so I can pass it to another program
Any ideas on how to get this to parse correctly
Here re 2 batch file that issulstrate the problem: a.bat: echo on
call b.bat -pw:eatme call b.bat -pw:eat;me call b.bat -pw:"eat;me" call "b.bat -pw:\"eat;me\""
b.bat: echo on
echo %1
for /F "tokens=1,2 delims=: " %%a in ( "%1" ) DO SET switch=%%a&SET value=%%b
echo switch=%switch% echo value=%value%
Thanks ! joe