我认为它没有正确逃脱。考虑:
// As you have it:
$cmd = "\"C:\Program Files (x86)\WinSCP\winSCP.exe\" /console /script=c:\wamp\www\client\transfer_script.txt";
echo $cmd;
> "C:\Program Files (x86)\WinSCP\winSCP.exe" /console /script=c:\wamp\www\client ransfer_script.txt
那看起来不对。尝试双转义引号外的反斜杠(指向脚本源的地方):
$cmd = "\"C:\Program Files (x86)\WinSCP\winSCP.exe\" /console /script=c:\\wamp\\www\\client\\transfer_script.txt";
echo $cmd;
> "C:\Program Files (x86)\WinSCP\winSCP.exe" /console /script=c:\wamp\www\client\transfer_script.txt
更好的。
更新
如果这仍然不起作用,我会尝试使用 进行四重转义\\\\
,以防万一 Windows 需要双反斜杠。还要考虑检查错误代码。