2015-05-04 3 views
0

Есть ли способ запустить сложный командный скрипт (пакетный файл), не записывая его на диск?Запустить cmd-скрипт, не записывая его на диск в виде пакетного файла из приложения Delphi 2010

Я хотел бы ввести мой скрипт внутри заметки, а затем ShellExecute он нажимает кнопку без записи на диск первым.

+0

Нет, не существует. CMD.EXE ожидает разбора текстового файла для получения команд или получения их из командной строки. Если вы делаете что-то, что требует скрипта, оно должно быть в файле. –

+2

Это зависит от того, что на самом деле делает скрипт. Как вы сказали, команды могут быть переданы в CMD.EXE в качестве параметров командной строки, поэтому вы можете вывести CMD.EXE с параметром '/ C', за которым следует команда. Это означало бы запуск нового CMD.EXE-процесса для каждой команды. Вы можете объединить несколько команд вместе в одном shell-out, используя оператор &&. Но тогда вы анализируете скрипт, чтобы знать, что безопасно, что можно связать и т. Д. Вероятнее всего, лучше переключиться на «IActiveScript», чтобы вы могли запускать код VBScript/JavaScript в памяти вместо использования CMD.EXE. –

ответ

0

Вот решение, которое я тестировал, и оно работает. Спасибо за ответы!

var: script_lines:string; 

script_lines:='hostname & getmac & ipconfig /all & tasklist'; 

ShellExecute(Handle, 'open', PChar('cmd.exe'), PChar('/k '+script_lines), nil, SW_SHOW); 
Смежные вопросы