Search the Community
Showing results for tags '$cmdline'.
Found 4 results
Hi Problem is this myscript -p <zumerkelen> -x something else myscript is my AutoIt compiled CUI. -p <> is first param - fails, see below -x [text] second param, works. When I run this with the param enclosed in <> I get the response The syntax of the command is incorrect. Experimentation indicates that the <> tags are the problem. _ArrayDisplay($CmdLine, "1 Array") MsgBox(16, "1 Raw", $CmdLineRaw) The problem is with the reading of the command line. It fails BEFORE it gets into the variables... I am not dealing with AutoIt, or even my own command line, this is legacy software. It seems that AutoIt "interprets" the <> before loading the command line... I need to be able to read that as text without it being interpreted. The only part I can control is my script, the myscript, which I can change at will. The standard command line functions appear all to interpret params on read. I want those params read raw. If I could just get that as a string it would be fine. Where to look? Skysnake
Hello all! I'm trying to make a little script that sends a message over TCP. An example payload would be: MY_PAYLOAD#<ATTRS><ATTR><NAME>MAILSERVER</NAME><OPERATION>set_value(ServiceStatus)</OPERATION><VALUE><![CDATA["Not Running"]]></VALUE><TIMESTAMP>1349297031</TIMESTAMP></ATTR></ATTRS>Note how the payload contains special characters, and how the CDATA contains a SPACE (i.e. "Not Running") My compiled AU3 script expects exactly two command line arguments: 1) destination server/port expressed as 127.0.0.1:80 2) the payload I want to send to my server application (which may have multiple ATTRs, this example only has one ATTR) MyApp.exe 127.0.0.1:80 "MY_PAYLOAD#<ATTRS><ATTR><NAME>MAILSERVER</NAME><OPERATION>set_value(ServiceStatus)</OPERATION><VALUE><![CDATA["Not Running"]]></VALUE><TIMESTAMP>1349297031</TIMESTAMP></ATTR></ATTRS>" My problems (plural) are with parsing of the second argument: 1) If I don't wrap second argument in double-quotes, then Windows bails out before even launching EXE with "< was unexpected at this time" 2) If I DO wrap second argument in double-quotes, then two problems can arise when my EXE parses the arguments: aa) The double-quotes are stripped from the CDATA value. ["Running"] is stored in the array as [Running] bb) If CDATA value DOES have a space, such as ["Not Running"], then I get an extra unwanted $CmdLine because the SPACE between Not and Running is treated as a separator. My second argument is thus split into two separate arguments,  and  instead of being treated as one arg stored in  cc) Additionally, my script exits because it has an "IF $CmdLine <>2 THEN Exit (1)" to validate the command line args. I've tried launching the EXE with the second argument wrapped and escaped in a multitude of ways. Double double-quotes, triple double-quotes, single-quotes on the outside with double-quotes inside (i.e. '"ETC"'), starting the second arg with a caret (i.e. ^"ETC") and one of three things happens: 1) "< was unexpected at this time" 2) my CDATA value is stripped of its double-quotes 3) my payload argument gets split at the space in the CDATA value and the script bails out due to the unexpected 3rd argument. Any ideas? How can I preserve the second argument literally, including all special characters, quotes and spaces? I tried adding some string manipulation code to grab the 2nd argument from $CmdLineRaw and it works (preserves the "Not Running" with quotes), but my number of arguments is still 3 instead of 2 if there is a space in the CDATA value. Any assistance would be greatly appreciated!
Is this possible?
Hello, I am trying to understand the $CmdLine array. My goal is to run scriptA.exe have it create a variable $varA and then run scriptB.exe and have scriptB.exe output $varA to a Msgbox. It isn't working though, so I am not getting how this works. This is what I am trying: ScriptA - $varA = 'Test' Run('d:\(x86)\AutoIt3\AutoIt3.exe "D:\AutoIT Script\CMDLINE\scriptB.au3"') ScriptB - If $CmdLine = 0 Then MsgBox(64, "Result", "No variable was found.") Else MsgBox(64, "Variable", $CmdLine & $varA) EndIf If someone can help me understand why this isn't working, I'd appreciate it.