2013-12-23 74 views
1

我的批處理文件:爲什麼運行批處理文件會得到不同的結果?

@echo off 

set vers=0.0 
FOR /F "USEBACKQ" %%A IN (`wmic datafile where name^="C:\\Windows\\System32\\msiexec.exe" get Version`) do (set vers=%%A) 

echo %vers% 

@pause 

的Windows XP(SP2):

3.0.3790.2180 

的Windows Vista(SP1)的Windows XP(64位):

ECHO is off. 

如何解決在這兩種情況下批處理文件都能正確執行?

回答

3
@echo off 
    setlocal enableextensions 

    set vers=0.0 
    FOR /F "tokens=2 delims== usebackq" %%A IN (
     `wmic datafile where name^="C:\\Windows\\System32\\msiexec.exe" get Version /value ^| find "="` 
    ) do set "vers=%%A" 

    echo %vers% 

    endlocal 
pause 

它只是要求WMIC在格式key=value輸出數據,過濾所述WMIC命令僅搜索與=線的輸出與分割使用該字符作爲分隔符標記線。第一個標記(鍵)被忽略,第二個標記(值)被分配給vers變量。

相關問題