2016-11-17 4 views
0

Нужно ли установить lpApplicationName в cmd.exe, как указано в документации, для запуска командного файла?Запуск командного файла с использованием createProcess()

  • "порт = 5598 имя_бд = демонстрационный хост = локальный"
  • "порт = 5599 имя_бд = демонстрационный хост = локальный"
  • "C: /tmp/000002AB-1.16432"
  • «C: /bin/pg_restore.exe "

Предположим, что путь к пакетному файлу -« C: /Users/abc.bat ». Как передать перечисленные выше строки в качестве аргументов в пакетный файл?

ответ

1

Усвоение стандартной конфигурации, ответ нет, не требуется . Вы можете включить командный файл в аргумент lpCommandLine. Остальные аргументы просто следуют за командным файлом с кавычками, где это необходимо.

test.cmd

@echo off 
    setlocal enableextensions disabledelayedexpansion 
    echo %1 
    echo %~1 
    echo %2 
    echo %~2 

test.c

#define _WIN32_WINNT 0x0500 
#include <windows.h> 

void main(void){ 

    // Spawn process variables 
    STARTUPINFO si; 
    PROCESS_INFORMATION pi; 

    ZeroMemory(&si, sizeof(si)); 
    si.cb = sizeof(si); 
    ZeroMemory(&pi, sizeof(pi)); 

    CreateProcess(
     NULL 
     , "\"test.cmd\" \"x=1 y=2\" \"x=3 y=4\"" 
     , NULL 
     , NULL 
     , TRUE 
     , 0 
     , NULL 
     , NULL 
     , &si 
     , &pi 
    ); 

    WaitForSingleObject(pi.hProcess, INFINITE); 
    CloseHandle(pi.hProcess); 
    CloseHandle(pi.hThread);  
}; 

Выход

W:\>test.exe 
"x=1 y=2" 
x=1 y=2 
"x=3 y=4" 
x=3 y=4