运行 使用 createProcess() 的批处理文件
Run a batch file using createProcess()
是否需要像文档中提到的那样将 lpApplicationName 设置为 cmd.exe 以 运行 批处理文件?
- "port=5598 dbname=demo host=localhost"
- "port=5599 dbname=demo host=localhost"
- "C:/tmp/000002AB-1.16432"
- "C:/bin/pg_restore.exe"
假设批处理文件的路径为"C:/Users/abc.bat"。
如何将上述字符串作为参数传递给批处理文件?
假设是标准配置,答案是否定的,不需要。您可以在 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
是否需要像文档中提到的那样将 lpApplicationName 设置为 cmd.exe 以 运行 批处理文件?
- "port=5598 dbname=demo host=localhost"
- "port=5599 dbname=demo host=localhost"
- "C:/tmp/000002AB-1.16432"
- "C:/bin/pg_restore.exe"
假设批处理文件的路径为"C:/Users/abc.bat"。 如何将上述字符串作为参数传递给批处理文件?
假设是标准配置,答案是否定的,不需要。您可以在 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