다음 번에 연결할 때 /s
스위치를 사용해야 할 수도 있습니다. 또한 /i
을 사용하여 find
명령에서 대소 문자를 구분하지 않을 수도 있습니다.
systeminfo /s "remotenamemachine" | find "KB22334358"
if %errorlevel% equ 1 goto nome else goto exit
:nome
systeminfo /s "remotenamemachine" | find /i "Nome host" >> C:\failed.txt
:exit
exit
또는 당신은 한 번에 모든 것을 얻을이 트리플 for /f
루프를 사용할 수 있습니다 : 당신은 또한 지금처럼 failed.txt 파일에 추가 할 수 있습니다
KB_Checker.bat
을
@echo off
setlocal ENABLEDELAYEDEXPANSION
set comp_name=%*
for /f "usebackq tokens=1* delims=" %%I in (`
systeminfo /s "%comp_name%"
`) do (
for /f "usebackq tokens=2 delims=:" %%k in (`
echo %%I ^| findstr /v "^)" ^| findstr "KB22334358"
`) do (
for /f "tokens=1* delims=" %%f in ('
echo %%k ^| findstr /v "UTC"
') do (
set temp_KB=%%f
)
)
for /f "usebackq tokens=2 delims=:" %%h in (`
echo %%I ^| findstr /i /C:"Nome host"
`) do (
for /f "tokens=1* delims=" %%f in ('
echo %%h ^| findstr /v "UTC"
') do (
set hm=%%f
)
)
) 2> nul
set KB=!temp_KB!
if not defined KB echo !hm! >> C:\failed.txt
exit
UPDATE
위의 스크립트를 업데이트하여 comp_name
환경 변수를 설정하십시오. var. 다음과 같이 스크립트에 컴퓨터 이름을 전달할 수 있습니다 : KB_Checker.bat computer_1
그러면 처리 할 것입니다
'Nome host '는'systeminfo'의 출력에 나타나야합니까? – usr2564301
참고 : 내 질문에 대한 가능한 대답은 'yes'입니다. * iff * 'system info'의 출력이 지역화 된 버전의 Windows 용으로 번역됩니다. 내 시스템이 영어로되어 있기 때문에 쉽게 확인할 수 없습니다. – usr2564301
어떤 호스트의 이름을 기록 하시겠습니까? 원격 컴퓨터의 이름이나 배치 파일을 실행하고있는 이름입니까? –