我是noob,這是我的第一個問題,但是在搜索噸數的答案之後,我仍然無法完全得到我想要的結果。所以問題是:需要獲取windows版本,然後將版本傳遞給變量,然後運行findstr
我使用版本獲取變量,但是findstr
無法使用它在txt文件中查找字符串。獲取Windows版本和版本,將它傳遞給變量以與findstr一起使用
我做了什麼:我使用這個代碼來獲取版本,並保存爲VAR
@echo off
setlocal EnableDelayedExpansion
for /f "tokens=2 delims==" %%G in ('wmic os get Caption /value') do (
set winEdition=%%G
)
echo !winEdition!
endlocal
goto :eof
輸出:微軟Windows 7企業
但是如果我運行IF
陳述或
findstr
與
!winEdition!
var我得到沒有結果IF
和「字符串未找到」與findstr
也如果我echo
var到txt文件我得到「牣獯景⁴摮睯湅整整灲††in」在txt文件中所以我認爲這是編碼問題,但我找不到解決它的方法。 更多細節:
@echo OFF
setlocal EnableDelayedExpansion
set "winEdition="
for /f "tokens=2 delims==" %%G in ('wmic os get Caption /value') do (
set winEdition=%%G
)
set numbers=
for /F "delims=:" %%a in ('findstr /I /N /C:"!winEdition!" serials.txt') do (
set /A after=%%a+1
set "numbers=!numbers!!after!: "
)
rem Search for the lines
for /F "tokens=1* delims=:" %%a in ('findstr /N "^" serials.txt ^| findstr /B "%numbers%"') do (
echo %%b
)
endlocal
goto :eof
代碼工作的第二部分,並用繩子測試:想採取從上面的代碼的變種,搜索在TXT文件中的字符串,返回下一行完整的代碼的完整代碼並與VAR我想進一步自動化。感謝您的幫助我也開放替代方法來獲得結果!
活動代碼頁:862 – TerraBys
我得到使用'CHCP 862'在正確的輸出批處理文件的頂部,並在'endlocal'之前插入命令行'echo「%winEdition%」''和'echo%winEdition%| findstr/C:Windows和'if「%winEdition%」==「Microsoft Windows 7 Enterprise」echo是,它是Windows 7'。請注意「Enterprise」後面的空格字符。批處理文件必須保存爲ANSI文件而不是Unicode文件。 – Mofi
在'set numbers ='命令行之前插入'if'%winEdition:〜-1%「==」「set」winEdition =%winEdition:〜0,-1%「'刪除尾部空格字符。並且在命令'findstr'中另外使用'/ L'來明確請求將搜索字符串解釋爲文字字符串而不是正則表達式。 – Mofi