2013-01-25 70 views
0

有沒有辦法通過Windows命令行來確定機器是否正在運行Intel或AMD處理器(因此它可以放在批處理文件中)?我正在嘗試爲某些驅動程序製作安裝腳本,並決定使用「Devcon」是最好的方法,但它需要正確的架構才能運行。通過Windows批處理文件確定Intel或AMD

此外,有沒有更好的方法來確定計算機是否運行32位或64位版本的Windows,除了檢查是否存在「Program Files(x86)」?這是我迄今採取的方法。我對編程或腳本編程並不陌生,但我對Windows CMD很陌生(我主要是Linux用戶)。

謝謝你們!如果您需要,我可以提供更多信息。

+0

你爲什麼要安裝驅動程序從腳本?一個真正的安裝程序將是一個更好的解決方案(無論如何,驅動程序安裝可能會在大多數當前的Windows系統上失敗,因爲您不能簽署腳本文件)。安裝程序將允許您根據處理器,體系結構和操作系統版本安裝正確的文件。 –

+0

製作「真正的安裝程序」的最佳方法是什麼? Visual Studio安裝程序創建者?我絕對接受想法。是的,窗口上寫着「司機沒有簽名,繼續嗎?」會彈出。對不起,我缺乏這方面的知識。你可以指點我一個來源,我可以自己學習(並作出答案,我會給你一個綠色檢查)。 – Chris

+1

有免費的安裝構建器(或VS安裝程序創建者)。例如,Inno Setup是免費的,並且具有很好的可擴展性。在這個網站上搜索「Windows Installers」或「[windows]安裝程序」,因爲這個主題上有很多帖子。 –

回答

2

我覺得批處理文件下方獲得信息,你想:

@echo off 
for /F "skip=1 delims=" %%a in ('wmic cpu get name') do set cpu=%%a 
for /F "skip=1 delims=^|" %%a in ('wmic os get name') do set os=%%a 
echo CPU: "%cpu% 
echo OS: "%os%" 

例如,在我的(很舊的)計算機,它表明:

CPU: "Intel(R) Pentium(R) M processor 1.20GHz 
OS: "Microsoft Windows XP Professional" 

我希望它有幫助。

安東尼

+0

這將在Windows 7 64位中返回NULL。 –

1
+0

看起來這可能是一個不錯的選擇,但是從你的源代碼來看,它看起來好像顯示了一大堆不需要的信息(並且很難解析簡單的IF語句)。有沒有辦法減少輸出(或解析它)?在Linux中,我顯然會通過一些正則表達式或其他東西來運行它,但是我從來沒有使用Windows來處理複雜的事情,所以我甚至不知道它是否可行。 – Chris

0

這裏是我的解決方案,但它僅檢查架構:

for /f "tokens=* delims=AMDx" %%a in ('"echo %processor_architecture%"') do (set arc=%%a & echo %arc%) 

它返回無論是86或64,並設置變量「弧」等於各自的架構...

我發現這對於將Nirsoft工具集成到我的腳本中特別有用,因爲它們中的許多內置86或64.