vc呼叫dos命令總結 systerm

2021-05-26 18:12:12 字數 1218 閱讀 6034

要在控制台程式裡面呼叫dos命令可以使用system函式,如system("dir");會把當前目錄下的檔案列表顯示出來。

但如果在視覺化視窗介面呼叫這個命令則會出現乙個小問題了

1 呼叫命令時會出現乙個dos視窗一閃而過,影響視覺效果。

2 無法將命令的執行結果反饋給使用者。

所以我們要用另外乙個函式來解決這個問題:winexec。(注1)

winexec的作用是執行指定的程式,其中第乙個引數是程式的路徑及引數,第二個引數是定義了以怎樣的形式啟動程式的常數值(詳細請見msdn)。

比如我們要獲得當前目錄下的檔案列表,可以這樣

winexec("cmd.exe /c dir > result.txt", sw_hide);

執行這行**後,將會在當前目錄下生成乙個result.txt的檔案,檔案的內容就是執行dir命令的輸出(注2)。並且不會出現dos視窗(sw_hide代表隱藏視窗)

有時候我們需要同時執行數條語句,是不是要執行多次system呼叫呢?

答案是否定的,dos自身提供了執行多條命令的功能,符號&&代表同時執行多條命令。

如「cd c:\demo && dir」會首先將目錄切換到 c:\demo資料夾,然後執行dir命令。

利用&&命令可以實現這樣的功能:暫停等待使用者按下任意鍵,接下來執行某個命令。

如:pause && dir 會在螢幕上顯示「請按任意鍵繼續」和,在使用者按下任意鍵後會執行dir命令輸出檔案列表。

「ping -w 3000 w > nul」暫停三秒後繼續(注3)

注1:uint winexec(

lpcstr lpcmdline,

uint ucmdshow

);parameters

ncmdshow

specifies how the cwnd is to be shown. it must be on

e of the following values:

注2:將螢幕顯示的內容轉到檔案中輸出

注3:這裡為了不顯示ping命令的結果,使用了重定向技術,將輸出轉到空裝置

nul是dos中的乙個裝置檔名 表示空裝置,其它裝置還有

con 控制台(鍵盤/顯示器) aux 第一序列通訊口

prn 第一並行通訊口/印表機 com1 第一序列通訊口

lpt1 第一並行通訊口/印表機 com2 第一序列通訊口

lpt2 第一並行通訊口/印表機 nul 空檔案

DOS命令總結

常用的內部命令有md cd rd dir path copy type edit ren del cls ver date time prompt。常用的外部命令有deltree format diskcopy label vol sys xcopy fc attrib mem tree。切換到其他...

c語言呼叫dos命令

if cmdstring null if pid fork 0 else if pid 0 else return status 分析一下原理估計就能看懂了 當system接受的命令為null時直接返回,否則fork出乙個子程序,因為fork在兩個程序 父程序和子程序中都返回,這裡要檢查返回的pid...

使用T SQL呼叫DOS命令

在sql server中呼叫dos命令的語法為 exec xp cmdshell dos命令 使用此命令來測試建立資料夾 錯誤訊息中明確的指出了xp cmdshell並沒有開啟,這涉及到伺服器安全的問題。嗯,理解 那麼要如何開啟呢?通過查閱msdn文件,得到以下結果 exec sp configur...