Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Неполадка в shellExecute

63K
29 декабря 2011 года
Max1548
13 / / 10.12.2011
Мне понадобилось запустить файл
 
Код:
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
, а остальные нет! Что я делаю неправильно?
16K
29 декабря 2011 года
asmforce
186 / / 05.01.2010
Вероятно, параметры попадают не в программу на perl, а в сам интерпретатор. ;) Стоит попробовать так:
 
Код:
C:\www\Perl\bin\perl.exe "C:/www/cgi-bin/index.pl > C:/www/temp.html path=C:\"
7
29 декабря 2011 года
@pixo $oft
3.4K / / 20.09.2006
Не знаю,к чему относится path=C:\,но мне кажется,что всё же не к перенаправлению вывода в файл.Порядок поменять надо
63K
30 декабря 2011 года
Max1548
13 / / 10.12.2011
asmforce, с кавычками не сработало, пишет: Can't open Perl script: "C:/www/cgi-bin/dir.pl > C:/www/temp.html path=C:"" invalid argument
$pixo, из командной строки все работает, так что дело не в порядке параметров!
7
30 декабря 2011 года
@pixo $oft
3.4K / / 20.09.2006
Может быть,
Цитата:
C:\www\Perl\bin\perl.exe "C:/www/cgi-bin/index.pl" > C:/www/temp.html path=C:\

(или без кавычек)
И кстати,не уверен,что слэш должен быть обратным.Также не уверен,что перенаправление вывода будет работать в таком случае

63K
31 декабря 2011 года
Max1548
13 / / 10.12.2011
Цитата: @pixo $oft
Может быть,(или без кавычек)
И кстати,не уверен,что слэш должен быть обратным.Также не уверен,что перенаправление вывода будет работать в таком случае


Дело в том, что из командной строки все работает!!! Без кавычек с обратными слэшами и т.д., то есть дело в неправильном запуске shellExecute, может быть попробовать какие-то другие функции?

278
31 декабря 2011 года
Alexander92
1.1K / / 04.08.2008
 
Код:
#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;
}

Вот так все великолепно работает. Возможно, со скриптом какие-то проблемы? Вы пробовали смотреть на уровне скрипта, какие параметры ему передаются при запуске из командной строки и при запуске через ShellExecute?
16K
31 декабря 2011 года
asmforce
186 / / 05.01.2010
Сам cmd.exe отлично сам разбивает аргументы:
 
Код:
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
  );


CreateProcess таки придётся использовать. :p
7
31 декабря 2011 года
@pixo $oft
3.4K / / 20.09.2006
Ну так блин же ж,>-то в кавычках!Конечно же,он будет восприниматься как аргумент:)
Надо вынести перенаправление вывода наружу
278
31 декабря 2011 года
Alexander92
1.1K / / 04.08.2008
 
Код:
ShellExecute(
 NULL,
 NULL,
 TEXT("cmd.exe"),
 TEXT("/c C:\\...\\perl.exe D:\\...\\script.pl some parameters > C:\\temp\\ololog"),
 NULL,
 SW_SHOW;
);

А если вот так поизвратиться? :D
16K
31 декабря 2011 года
asmforce
186 / / 05.01.2010
/b> `>` парсится как аргумент :rolleyes:
63K
01 января 2012 года
Max1548
13 / / 10.12.2011
Огромное спасибо, вам всем! Все заработало!!! Пост №7, автора Alexander92 мне очень помог, как и все остальные!!! Спасибо вам всем!!!!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог