2016-07-18 8 views
2

無効なKB記事がコンピュータ/ Windowsサーバーにインストールされているかどうかを示すウィンドウバッチファイルを作成中に驚いています。 \ USERSはPVENK17 \デスクトップ\ TEST \ QFE_LISTを\:無効なマイクロソフトのアップデートのためのWindowsバッチファイル

これは私が今では午前ところ、ある

スクリプト:

@ECHO OFF 
WMIC QFE GET HOTFIXID>%~dp0QFE_list.txt 
FOR /f "delims=," %%a IN (%~dp0Patch_List.txt) DO (
    CALL :PATCH_LIST %%a 
) 
GOTO :EOF 

:PATCH_LIST 
REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /s /f "%1">NULL.txt 
IF %ERRORLEVEL% EQU 0 ECHO %1: INSTALLED 
IF %ERRORLEVEL% NEQ 0 (
ECHO FIND %1 
FIND /C "%1" %~dp0QFE_List.txt>NULL.txt 
IF ERRORLEVEL 0 ECHO %1: QFE INSTALLED 
IF ERRORLEVEL 1 ECHO %1: **** NOT INSTALLED! **** 
) 

電流出力:---------- C .TXT:1

所望の出力:インストール

INPUTFILE内容:KB3057839、KB3002657

問題:

1 KBarticleでも動作しますが、私がinputfileに1より多くを置くとき、それは働いていません。

この問題を解決するのに役立ちます。

おかげ プラシャンス

+0

[あなたのバッチファイルのデバッグ] (http://www.robvanderwoude.com/battech_debugging.php) – DavidPostill

答えて

0

私は、入力ファイル形式を変更することで、この作業を行うことができます。行につき1キロバイト

KB3057839 
KB3002657 

その後、単に「delims」のものを削除し、それが複数の項目のために動作します。最後の行の論理が不明です。 「インストール済み/未インストール」と思われる

そして、BTWは不要なファイルを作成しないようにコマンドをNULにリダイレクトします。私はこのコードを書いた

@ECHO OFF 
WMIC QFE GET HOTFIXID>%~dp0QFE_list.txt 
FOR /f %%a IN (%~dp0Patch_List.txt) DO (
    CALL :PATCH_LIST %%a 
) 
GOTO :EOF 

:PATCH_LIST 
REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /s /f "%1">NUL 
IF %ERRORLEVEL% EQU 0 ECHO %1: INSTALLED 
IF %ERRORLEVEL% NEQ 0 (
ECHO FIND %1 
FIND /C "%1" %~dp0QFE_List.txt>NUL 
IF ERRORLEVEL 0 ECHO %1: QFE INSTALLED 
IF ERRORLEVEL 1 ECHO %1: **** NOT INSTALLED! **** 
) 
+0

私はこのコード部分を指示どおりに実行しましたが、出力が目的のものではありませんでした。 –

+0

OUTPUT: FIND KB3057839 KB3057839:QFE INSTALLED キーを押して続行します。 。 。 FIND KB3002657 KB3002657:QFE INSTALLED KB3002657:****インストールされていません! **** 任意のキーを押して続行します。 。 。 –

0

はるかにデバッグした後、私はその理想的ではない解決策を知っているが、それは動作します

コード:

@ECHO OFF 
title IllegalPatchCheck 

echo Select a server. (AW/PG) 
set /p server= 

IF /i "%server%"=="AW" goto AdminWorkstation 
IF /i "%server%"=="PG" goto PeripheralGateway 

echo Invalid Input. 
goto commonexit 

:AdminWorkstation 

WMIC QFE GET HOTFIXID>%~dp0QFE_list.txt 

find /c "KB3057839" %~dp0QFE_list.txt>nul 
if %errorlevel% equ 1 ECHO KB3057839 NOT Found 
if %errorlevel% neq 1 ECHO KB3057839 Found 

find /c "KB3058515" %~dp0QFE_list.txt>nul 
if %errorlevel% equ 1 ECHO KB3057839 NOT Found 
if %errorlevel% neq 1 echo KB3058515 Found 

find /c "KB3059317" %~dp0QFE_list.txt>nul 
if %errorlevel% equ 1 echo KB3059317 NOT found 
if %errorlevel% neq 1 echo KB3059317 Found 

find /c "KB3063858" %~dp0QFE_list.txt>nul 
if %errorlevel% equ 1 echo KB3063858 NOT found 
if %errorlevel% neq 1 echo KB3063858 Found 

goto commonexit 

:PeripheralGateway 

WMIC QFE GET HOTFIXID>%~dp0QFE_list.txt 

find /c "KB2984972" %~dp0QFE_list.txt>nul 
if %errorlevel% equ 1 echo KB2984972 NOT Found 
if %errorlevel% neq 1 echo KB2984972 Found 

find /c "KB3046049" %~dp0QFE_list.txt>nul 
if %errorlevel% equ 1 echo KB3046049 NOT Found 
if %errorlevel% neq 1 echo KB3046049 Found 

find /c "KB3002657" %~dp0QFE_list.txt>nul 
if %errorlevel% equ 1 echo KB3002657 NOT Found 
if %errorlevel% neq 1 echo KB3002657 Found 

goto commonexit 

:commonexit 
del /q /f %~dp0QFE_list.txt >nul 
pause 

おかげ プラシャンス

関連する問題