2016-07-12 3 views
2

バッチスクリプトを実行して自分のLANのワークステーションの状態を確認しようとしていますが、これまでに.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

最後の行は、[無駄な猫の使用](https://en.wikipedia.org/wiki/Cat_(Unix)#Useless_use_of_cat)のWindows版です。あなたは 'findstr'のstdinを' <'を使ってファイルにリダイレクトすることができます。 – Melebius

+1

確かにUnixとは違って、タイプの目的はファイルをタイプすることです。ファイルを結合するのではありません(それは可能ですが)。コマンドプロセッサにタイプが組み込まれているので、プロセスの無駄はありません。また、新しいユーザーにその操作を説明するために、私はよりきれいに見えます。どちらの方法でも動作します。 –

関連する問題