2016-11-17 35 views
0

バッチファイルを実行するには、ドキュメントに記載されているようにlpApplicationNameをcmd.exeに設定する必要がありますか?createProcess()を使用してバッチファイルを実行する

  • "ポート= 5598 DBNAME =デモホスト= localhostを"
  • "ポート= 5599 DBNAME =デモホスト= localhostを"
  • "C:/tmp/000002AB-1.16432"
  • 「C: /bin/pg_restore.exe "

バッチファイルのパスを" C:/Users/abc.bat "とします。 上記の文字列を渡すには、バッチファイルに引数として渡す必要がありますか?

答えて

1

標準的な構成を仮定すると、答えはいいえ、が必要ですです。バッチファイルをlpCommandLine引数に含めることができます。残りの引数はバッチファイルの後に必要な箇所に引用符を付けたものです。

@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 
をTEST.CMD
関連する問題