2014-10-16 85 views
1

我創建了這個簡單的批處理文件,它設置了兩次變量。一旦找到了我正在尋找的答案,然後是第二次刪除變量的空白。如何在批處理文件中設置WMIC變量?

for /f "tokens=1 delims==" %%f in ('WMIC PRODUCT WHERE "Name like "%%iTunes%%"" get name') do set "myVar=%%f" 
echo %myVar% 

它給了我下面的結果。

C:\Batch>disktest 

C:\Batch>for /F "tokens=1 delims==" %f in ('WMIC PRODUCT WHERE "Name like "%iTun 
es%"" get name') do set "myVar=%f" 

" \Batch>set "myVar=Name 

" \Batch>set "myVar=iTunes 

" \Batch>set "myVar= 

C:\Batch>echo 
ECHO is on. 

C:\Batch> 

因此,我沒有正確地用^來轉義,或者我不知道我失蹤了什麼。誰能幫我嗎?

這是Windows 7x64,但我也想在XP SP3中使用它。

回答

1

經過對新發現的wmic的一些實驗:)我認爲你的問題是,默認情況下,它會列出你想要的結果以及列的標題,並在結尾處跟着空行。

過濾從WMIC的結果,添加| FIND "xxx",例如,

wmic product where "name like 'xxx'" get name | find "xxx" 

這將過濾掉包含標題行(這就是爲什麼你在你的成績獲得「姓名」)和最終空行。

事實上,在進一步思考,你可以完全刪除「其中」條款,與「發現」替換它,所以:

wmic product get name | find "xxx" 
+0

感謝@Ian添加,我就跟着你建議的第一個。這是我現在擁有的。 'for/f「tokens = 1-5 delims =」%% A in('wmic product get name ^,version^| find「iTunes」')do set「myVar = %% A」'NOTE the^carrot我曾經打破了管道|和逗號。這用於批量使用。 echo%myVar% – 2014-10-17 00:35:28

+0

另外@伊恩,我不能投票,因爲我還沒有足夠的信用。但我將其標記爲答案。 – 2014-10-17 00:41:21

+0

@DanO。不客氣:)你現在在路上。回答一些問題! – Ian 2014-10-17 10:27:49

0

我有同樣的問題和解決方案是:

wmic nic get name, index 

set /p IndexOfAdapter= "What Adapter's index would you select? " 

FOR /F "delims==" %%x IN ('WMIC NIC WHERE index^="%IndexOfAdapter%" GET name ^| FIND /V "Name" ^| FIND " "') DO (SET BOOK=%%x) 

現在我得到適配器的名稱,我想禁用或啓用,並避免空答案或名稱答案。第一次FIND I過濾名稱,第二次過濾空白。
要測試腳本,在最後

echo %BOOK% 
相關問題