Давайте сначала немного опустим это на землю. Следующая строка:
exec("C:\\xampp\\upload.exe backup /command \"option confirm off\" \"put C:\\big boy\\Documents\\dev notes\\\" \"exit\"");
В основном вас интересует фактическая строка команды, давайте еще раз ее рассмотрим:
C:\xampp\upload.exe backup /command "option confirm off" ⤦
⤥"put C:\big boy\Documents\dev notes\" "exit"
Поскольку теперь вам должно быть очевидно, что это недопустимая команда в оболочке. Обратитесь к документации upload.exe
, в каком формате должно передаваться значение переключателя /command
.
Поскольку вы не указали, что такое upload.exe
, я не могу дать здесь более конкретного предложения. Однако один из распространенных способов решения этих проблем - сначала назначить команду переменной, а затем выполнить ее. Это позволяет отображать отладочную информацию, которая затем позволяет легко исправить:
$command = "C:\\xampp\\upload.exe backup /command \"option confirm off\" \"put C:\\big boy\\Documents\\dev notes\\\" \"exit\"";
exec($command);
Может быть, это просто (только догадывается, вот как это работает с cmd /k
):
$command = 'C:\xampp\upload.exe backup /command ""option confirm off" ⤦
⤥"put "c:\big boy\Documents\dev notes\" "exit""';
Изменить: И теперь, когда вы написали, на самом деле это команда winscp.com
, я бы предположил:
$command = 'C:\xampp\upload.exe backup /command "option confirm off" ⤦
⤥"put ""c:\big boy\Documents\dev notes\""" "exit"';
Со следующими правилами:
Каждая отдельная команда должна быть заключена в "
кавычки, если она содержит пробелы.
option confirm off
"option confirm off"
Если команда содержит также "
кавычки, их нужно удвоить ""
put "c:\big boy\Documents\dev notes\"
"put ""c:\big boy\Documents\dev notes\"""
person
hakre
schedule
27.12.2012