[Interest] Executing PowerShell command with quotes using QProcess

Jason Kretzer Jason at gocodigo.com
Thu Apr 3 01:13:54 CEST 2014


Thank you, sir. I never would have found that tidbit...

-----Original Message-----
From: interest-bounces+jason=gocodigo.com at qt-project.org [mailto:interest-bounces+jason=gocodigo.com at qt-project.org] On Behalf Of Thiago Macieira
Sent: Wednesday, April 02, 2014 6:24 PM
To: interest at qt-project.org
Subject: Re: [Interest] Executing PowerShell command with quotes using QProcess

Em qua 02 abr 2014, às 12:18:59, Jason Kretzer escreveu:
>     powershellHDD.start("PowerShell -Command \"&{(Get-WmiObject 
> Win32_LogicalDisk -Filter \\\"DeviceID='C:’\\\").Size}\"");

> This does not work as I expect it to.  The dataHDDsize is an empty 
> string “”.  If I pull the command out and run it directly from a 
> command prompt (removing the escaping backslashes) it runs exactly as I expect it to
> returning a number.   I thought maybe the number is the problem and I have
> similar commands that return proper letters and the same thing occurs.
> 
> Style and suggestions for third party libs aside, does any one have 
> any pointers?

There's a comment in qprocess.cpp that reads:

    // handle quoting. tokens can be surrounded by double quotes
    // "hello world". three consecutive double quotes represent
    // the quote character itself.

I don't know whose idea it was to use three quotes successively to indicate a quote character. It doesn't work on a regular Unix shell:

$ echo """hello"""
hello

Nor on Windows's prompt:
C:\>echo """hello"""
"""hello"""

That commit has been there since the Qt public history started. It's even documented as such (I had to look it up, I didn't know):
	http://qt-project.org/doc/qt-5/qprocess.html#start-3

But I don't know why it was done like that. It's highly surprising. If it weren't documented, I'd be tempted to just change behaviour and go for standard backslashing.

--
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

_______________________________________________
Interest mailing list
Interest at qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest


More information about the Interest mailing list