배치 프로젝트에 배치 파일을 포함시키고 콘솔에서 배치 스크립트를 실행하고 싶습니다.배치 스크립트 파일을 임베디드하고 C++ 콘솔 프로젝트에서 실행
포함 스크립트
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#define WINDOWS_LEAN_AND_MEAN
#include <Windows.h>
std::wstring GetEnvString()
{
wchar_t* env = GetEnvironmentStrings();
if (!env)
abort();
const wchar_t* var = env;
size_t totallen = 0;
size_t len;
while ((len = wcslen(var)) > 0)
{
totallen += len + 1;
var += len + 1;
}
std::wstring result(env, totallen);
FreeEnvironmentStrings(env);
return result;
}
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
std::wstring env = GetEnvString();
env += L"myvar=boo";
env.push_back('\0'); // somewhat awkward way to embed a null-terminator
STARTUPINFO si = { sizeof(STARTUPINFO) };
PROCESS_INFORMATION pi;
wchar_t cmdline[] = L"cmd.exe /C f.bat";
if (!CreateProcess(NULL, cmdline, NULL, NULL, false, CREATE_UNICODE_ENVIRONMENT,
(LPVOID)env.c_str(), NULL, &si, &pi))
{
std::cout << GetLastError();
abort();
}
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
getch();
}
embed batch script file in c++ console
내가 자원 프로젝트에서 실행하려는이 있습니다 위치에 배치 파일을 실행하는 방법을
wchar_t cmdline[] = L"cmd.exe /C f.bat";
덕분에 남자 만 삽입 자원에 대한 어떤 방법을 사용하여 실행할 수 있습니까? –
당신은 임베디드 리소스를 가져 와서 어쨌든 (임시 위치로) 파일에 저장 한 다음 시스템 또는 popen을 사용하여 해당 bat 파일을 실행해야합니다. 또는 임시 파일을 사용하지 않으려면 리소스에서 데이터를 읽고 시스템을 사용하여 실행할 수있는'cmd/c param1 param2 ... '문자열을 만들어야합니다. – Pavel
는 예제 코드 –