当我将cmd命令写成一个bat脚本,放在FileUp文件夹下,脚本内容如下
@echo off
ping 127.0.0.1 -n 5
xcopy /s /e /y "D:\xxx\FileUp\zipTemp\*.*" "D:\xxx\"
del /s /q "D:\xxx\FileUp\*.*"
"D:\xxx\a.exe"
用CreateProcess来调用时
CreateProcessA(cmdtxt.c_str(),"", NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);
出现一个深坑,那就是a.exe运行不了,但是单独运行脚本又能运行a.exe;
原因:进程创建调用cmd脚本,并非将cmd全部加入执行列表,而是读取一行执行一行,倒数第二行我将脚本本身给删除了,进程读取不到后面a.exe执行的命令,自然无法运行了;
解决:将删除命令放到最后执行即可