Неполадка в shellExecute
Код:
C:\www\Perl\bin\perl.exe
Код:
C:/www/cgi-bin/index.pl > C:/www/temp.html path=C:\
Пишу
Код:
ShellExecute(handle, nil, 'C:\www\Perl\bin\perl.exe', PAnsiChar('C:/www/cgi-bin/dir.pl > C:/www/temp.html path=C:\'), nil, SW_SHOWNORMAL)
Запускаемая программа видит только первый параметр
Код:
C:/www/cgi-bin/index.pl
Код:
C:\www\Perl\bin\perl.exe "C:/www/cgi-bin/index.pl > C:/www/temp.html path=C:\"
Не знаю,к чему относится path=C:\,но мне кажется,что всё же не к перенаправлению вывода в файл.Порядок поменять надо
$pixo, из командной строки все работает, так что дело не в порядке параметров!
Цитата:
C:\www\Perl\bin\perl.exe "C:/www/cgi-bin/index.pl" > C:/www/temp.html path=C:\
(или без кавычек)
И кстати,не уверен,что слэш должен быть обратным.Также не уверен,что перенаправление вывода будет работать в таком случае
Цитата: @pixo $oft
Может быть,(или без кавычек)
И кстати,не уверен,что слэш должен быть обратным.Также не уверен,что перенаправление вывода будет работать в таком случае
И кстати,не уверен,что слэш должен быть обратным.Также не уверен,что перенаправление вывода будет работать в таком случае
Дело в том, что из командной строки все работает!!! Без кавычек с обратными слэшами и т.д., то есть дело в неправильном запуске shellExecute, может быть попробовать какие-то другие функции?
Код:
#include <windows.h>
#include <shellapi.h>
int main(void) {
ShellExecute(NULL, TEXT("open"), TEXT("cmd.exe"), TEXT(" /c D:\\1.bat 12345 > D:\\1.txt"), NULL, SW_SHOW);
return 0;
}
#include <shellapi.h>
int main(void) {
ShellExecute(NULL, TEXT("open"), TEXT("cmd.exe"), TEXT(" /c D:\\1.bat 12345 > D:\\1.txt"), NULL, SW_SHOW);
return 0;
}
Вот так все великолепно работает. Возможно, со скриптом какие-то проблемы? Вы пробовали смотреть на уровне скрипта, какие параметры ему передаются при запуске из командной строки и при запуске через ShellExecute?
Код:
cmd.exe "/c echo ololo > c:\\temp\\ololog"
Вот этот вызов запускает скрипт, все параметры честно передаются, но перенаправление вывода не работает, а вместо этого, символ `>` воспринимается как аргумент. ;)
Код:
ShellExecute(
NULL,
NULL,
TEXT("c:\\programs\\strawberry\\perl\\bin\\perl.exe"),
TEXT("d:\\work\\solutions\\perl\\fs\\md5sum.pl c:\\temp\\demo3\\demo3.pro c:\\temp\\demo3\\demo3.pro.user > c:\\temp\\ololog"),
NULL,
SW_SHOW
);
NULL,
NULL,
TEXT("c:\\programs\\strawberry\\perl\\bin\\perl.exe"),
TEXT("d:\\work\\solutions\\perl\\fs\\md5sum.pl c:\\temp\\demo3\\demo3.pro c:\\temp\\demo3\\demo3.pro.user > c:\\temp\\ololog"),
NULL,
SW_SHOW
);
CreateProcess таки придётся использовать. :p
Надо вынести перенаправление вывода наружу
Код:
ShellExecute(
NULL,
NULL,
TEXT("cmd.exe"),
TEXT("/c C:\\...\\perl.exe D:\\...\\script.pl some parameters > C:\\temp\\ololog"),
NULL,
SW_SHOW;
);
NULL,
NULL,
TEXT("cmd.exe"),
TEXT("/c C:\\...\\perl.exe D:\\...\\script.pl some parameters > C:\\temp\\ololog"),
NULL,
SW_SHOW;
);
А если вот так поизвратиться? :D
/b> `>` парсится как аргумент :rolleyes:
Огромное спасибо, вам всем! Все заработало!!! Пост №7, автора Alexander92 мне очень помог, как и все остальные!!! Спасибо вам всем!!!!