這裡我使用createprocess來執行指令碼,使用管道將指令碼輸出重定向到檔案中,執行指令碼基本上都可以執行,要判斷執行結果,就需要對從管道返回的執行結果進行分析,判斷此次是否執行成功。
我比較習慣使用c的檔案操作,另使用乙個程式對指令碼進行管理,對建立的虛擬機器名稱和ip進行分配,並將結果寫進redis和配置檔案及log檔案。
部分操作不是執行緒安全的,我在使用的過程中對執行指令碼這部分一直是單執行緒操作的,而且一些檔案在操作後並不會關閉檔案指標,使用fflush來進行重新整理來節省效率。
#include #include #include bool powershellservice::judgefilei***ist(std::string &path) //判斷指令碼檔案是否存在
return true;
}std::wstring s2ws(cosnt std::string &s)
bool executedoscommond(std::string &cmd)
startupinfo si;
process_information pi;
si.cb = sizeof(startupinfo);
getstartupinfo(&si);
si.hstderror = hwrite;
si.hstdoutput = hwrite;
si.wshowwindow = sw_hide;
si.dwflags = startf_useshowwindow | startf_usestdhandles;
if(!createprocess(null, commander, null, null, true, null, null, null, &si, &pi)) //執行指令碼
closehandle(hwrite);
char buffer[4096];
dword bytesread;
addlogtorecorddetail(cmd);
while(true)
else
}closehandle(hread);
return true;
}bool excutepowershellscript(const char *path)
自動執行指令碼
乙個偶然的機會,發現了自動執行指令碼的東東,真是神奇啊,可以執行sql 控制台命令等。由於研究的時間有限,所以知之甚少 先和大家分享下,哈 dim consoleprocess as new system.diagnostics.process consoleprocess.startinfo.fi...
C MFC ShellExecute執行指令碼
目前知道三種方式 winexec,shellexecute createprocess。1.阻塞式呼叫,呼叫時程序阻塞 void cmfccodedlg callshellscript cstring path,cstring fbat,cstring param shexecinfo.cbsize...
Mac執行指令碼
由於iphone的成功,用mac os的朋友也越來越多,建立批處理指令碼檔案還是非常重要的。由於在mac下面建立指令碼檔案和windows下面大不一樣,於是寫篇博文紀錄一下。plain view plain copy 1.bin bash 2.echo abc plain view plain co...