【问题标题】:run batch file with /y using createprocess vs2010使用 createprocess vs2010 使用 /y 运行批处理文件
【发布时间】:2013-06-08 06:57:09
【问题描述】:

我的批处理文件要求输入 y/n。我使用 CreateProcess() 方法运行该批处理文件。如果我使用 /y 作为命令行运行我的批处理文件,它不会要求输入。例如

run.bat /y

我想使用带有命令行 /y 的 CreateProcess() 运行我的批处理文件,例如,我不知道如何使用 CreateProcess() 来执行此操作,并且我不想修改我的批处理文件。

::CreateProcess(L"run.bat",NULL,NULL,NULL,TRUE,CREATE_NEW_CONSOLE,NULL,NULL,&startInfo,&procInfo ) ,我也试试这个

::CreateProcess(L"run.bat",L"/y",NULL,NULL,TRUE,CREATE_NEW_CONSOLE,NULL,NULL,&startInfo,&procInfo )

但是,它不起作用。如果有人知道怎么做,请告诉我。

::CreateProcess(L"run.bat",L"/y",NULL,NULL,TRUE,CREATE_NEW_CONSOLE,NULL,NULL,&startInfo,&procInfo ) 这工作正常。这是我的错误,我改变了 if 部分,而我的流程进入了 else 部分。我总是改变我的if部分。感谢您的快速回复。

【问题讨论】:

    标签: visual-studio-2010 createprocess


    【解决方案1】:

    试试这个

    ::CreateProcess(L"cmd.exe", L"/c run.bat /y", NULL, NULL, TRUE, CREATE_NEW_CONSOLE,
         NULL, NULL, &startInfo, &procInfo )
    

    因为它says on MSDN

    要运行批处理文件,您必须启动命令解释器;将 lpApplicationName 设置为 cmd.exe 并将 lpCommandLine 设置为以下参数:/c 加上批处理文件的名称。

    【讨论】:

    • 我试试这个,但是不行,我也试试这个if(::CreateProcess(L"G:\\run.bat",L"\/y",NULL,NULL,TRUE,CREATE_NEW_CONSOLE,NULL,NULL,&startInfo,&procInfo ) > 0)
    • CreateProcess("cmd.exe", "/c run.bat /y", ... 不使用 PATH 搜索 cmd.exe 因此,如果当前目录中不存在任何内容(极有可能),它会失败。另一方面,CreateProcess(NULL, "cmd.exe /c run.bat /y", ... 会搜索 PATH。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 2011-01-23
    • 2019-01-09
    相关资源
    最近更新 更多