2017-01-21 10 views
-1

Я хочу использовать эту команду с Pascal. Является ли это возможным?Можно ли запустить эту команду Windows с помощью Pascal?

for /r %i in (boom.lpi) do xcopy /Y "%i" z:\ 

Я попытался это:

exec('p:','for /r "%i" in (boom.lpi) do xcopy /Y "%i" "%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"'); 
+1

Там нет DOS больше, вы работаете в Windows. Эта команда будет интерпретирована командной оболочкой Windows 'cmd.exe'. Вызовите 'CreateProcess' для создания нового' cmd.exe' процесса, передающего команду в качестве аргумента. Однако не делайте этого. Это действительно потрясающая идея. Если вы хотите скопировать файлы, сделайте это. Для этого используйте системный API. –

+0

@LetalGamer Дэвид Хеффернан абсолютно прав. Я совершенно уверен, что вы не используете DOS (Disk Operating System), а в командной строке Windows. Переместите указатель мыши на тег __dos__ или прочитайте [info] (http://stackoverflow.com/tags/dos/info) этого тега. Пожалуйста, __edit__ ваш вопрос, удалите тег __dos__ и лучше отформатируйте свой вопрос, используя синтаксис Markdown, как описано на странице справки [Справка по редактированию разметки] (http://stackoverflow.com/editing-help). И было бы лучше сделать копию файла в вашем приложении pascal с помощью API вместо использования командного процесса. – Mofi

+0

Вызов CreateProcess напрямую не рекомендуется FreePascal, так как существует множество лучших вариантов: http://wiki.freepascal.org/Executing_External_Programs –

ответ

0

Вы должны выполнить команды оболочки над оболочкой. Exec и друзья обычно не выполняют оболочку, поэтому вам нужно найти оболочку (cmd.exe или command.com, в зависимости от команд, которые вы хотите запустить), а затем выполнить ее с параметром/c.

Лучше всего использовать Sysutils.ExecuteProcess, поскольку он позволяет избежать некоторых проблем с цитированием этого exec. Непроверенные код концепции:

ExecuteProcess(getenvironmentvariable('comspec'),['/c',' for /r %i in (boom.lpi) do xcopy /Y "%i" z:\']); 

Вы можете освежить новые способы execute programs in Free Pascal