2016-07-12 50 views
2

我想做一個批處理腳本來檢查我的局域網工作站的激活狀態,到目前爲止我有下面的代碼保存到.txt的激活狀態。批處理腳本來檢查Windows 7激活

@echo off 
cscript /nologo c:\windows\system32\slmgr.vbs /xpr > ActivatedStatus.txt | findstr /i /c:" will expire "> NUL 2>&1 
if [%errorlevel%]==[0] (echo Not permanently activated.) else (echo Permanently activated) 
exit /b 

的輸出ActivatedStatus.txt看起來是這樣的:

Windows(R) 7, Professional edition: 
The machine is permanently activated. 

我要的是隻創建一個.txt如果工作站沒有被激活,但我不能得到,如果上班聲明。

回答

3

通過既嘗試重定向和管道在同一命令行上,你只是重定向,沒有什麼東西被送入findstr。所以,你要麼只需要管沿着數據:

cscript /nologo c:\windows\system32\slmgr.vbs /xpr | findstr /i /c:" will expire "> NUL 2>&1 

或者,如果你要創建的文本文件,你需要先創建它,然後通過管道它的數據findstr

cscript /nologo c:\windows\system32\slmgr.vbs /xpr > ActivatedStatus.txt 
type ActivatedStatus.txt | findstr /i /c:" will expire "> NUL 2>&1 
+0

最後一行是[useless use of cat]的一個Windows版本(https://en.wikipedia.org/wiki/Cat_(Unix)#Useless_use_of_cat)。你可以使用'<'來重定向'findstr'的​​stdin到文件。 – Melebius

+1

當然,但與Unix不同,類型的目的是鍵入文件,而不是合併文件(儘管它可以這樣做),並且由於類型內置於命令處理器中,因此不會浪費任何進程。此外,我向新用戶解釋操作看起來更清潔。不管哪種方式都行得通。 –