win7系統(tǒng)下載
當(dāng)前位置: 首頁 > 電腦學(xué)習(xí)教程 > 詳細(xì)頁面

想讓命令行(cmd.exe)執(zhí)行一個(gè)命令如何辦

發(fā)布時(shí)間:2024-04-15 文章來源:深度系統(tǒng)下載 瀏覽:

在某些場(chǎng)合,我們會(huì)有這樣的想法,在程序中啟動(dòng)cmd.exe,并且讓它執(zhí)行一命令. 例如想讓cmd.exe執(zhí)行taskkill. 前者很好實(shí)現(xiàn),就是調(diào)用類似于CreateProcess的API, 要實(shí)現(xiàn)后者我們可能會(huì)想到將命令taskkill加到參數(shù)中不就可以了嗎? 但是這是不可以的(添加參數(shù)的方法要稍作改動(dòng)也可以
), 這個(gè)我已經(jīng)做過驗(yàn)證了, 為什么不可以, 我暫時(shí)不深究. 先考慮如果解決這個(gè)問題.

 

批處理, 實(shí)際上windows為我們提供的一個(gè)腳本處理方案. 我們可以將所要執(zhí)行的腳本都一次寫入以bat為后綴的文本文件中, 我們只要去執(zhí)行這個(gè)批處理, 里面的腳本就可以執(zhí)行.

 

基于這個(gè)思路, 我們將我們的命令放在批處理文件中, 那么我們所舉的這個(gè)例子就可以taskkill放在bat文件中即可. 這樣我們的問題得以解決.

 

接下來我們看看taskkill這個(gè)命令,這個(gè)命令的作用是結(jié)束一個(gè)進(jìn)程.后面的參數(shù)會(huì)隨需而變, 參數(shù)就是想要結(jié)束的進(jìn)程進(jìn)程名, 可以簡單的將進(jìn)程的名字寫在批處理里面, 象這樣:

taskkill /im winword.exe

這樣當(dāng)我們執(zhí)行這個(gè)批處理的時(shí)候,就可以結(jié)束微軟的word字處理程序. 但是這樣缺少靈活性, 結(jié)束不同進(jìn)程需要重新編輯這個(gè)批處理. 因此我們這里的winword.exe,也就是進(jìn)程名通過比處理參數(shù)的名字傳進(jìn)來.象這樣:

taskkill /im %1

這里的就是傳給批處理的第一個(gè)參數(shù). 我們做了這些工作,接下來我們想結(jié)束word進(jìn)程可以這樣,執(zhí)行我們寫的批處理,參數(shù)是winword.exe

 

到這里可能有人問,你這樣做, 要結(jié)束進(jìn)程名不得在程序?qū)懰懒? 不不不, 千萬不要這么做, 這個(gè)參數(shù)得讓用戶自己去選擇.

還有人會(huì)說, 你用類似TerminateProcess不就可以解決這個(gè)問題, 我想說的解決問題的辦法有很多中, 只要選擇最適合你的就好. 在我的應(yīng)用場(chǎng)景中, 這個(gè)方案就是我的最佳, 因?yàn)槲矣龅降那樾吻『檬遣荒芨膭?dòng)源碼的.

 

寫到這里應(yīng)該結(jié)束了, 等等.

 

還有個(gè)問題沒有解釋清楚, 就是上面標(biāo)注的部分, 如果我們把添加參數(shù)的方法改動(dòng)一二就可以.

我們不是簡單象這樣, cmd.exe taskkill /im winword.exe

而是多加一個(gè)參數(shù)/c或者/k, 具體這兩個(gè)參數(shù)的意義請(qǐng)?jiān)诿畲翱谥休斎隿md /?查看.

我們改為:

cmd.exe /c /taskkill /im winword.exe

 

另外我們可以把要接受的進(jìn)程可以放在一個(gè)文本文件中(.txt), 一行一個(gè)進(jìn)程名. 讓后在批處理里面用for語句進(jìn)行分析.

本文章關(guān)鍵詞:   命令行 cmd.exe 執(zhí)行 一個(gè) 命令 如何辦