
26-11-2007, 12:04
|
 |
|
|
חבר מתאריך: 08.11.01
הודעות: 5,735
|
|
|
עזרה עם סקריפט batch
כתבתי סקריפט batch שיאסוף מרשימת שרתים את מערכת ההפעלה, service pack ושם הדומיין, וייצא אותם לקובץ csv.
הסקריפט עובד סבבה, מלבד עניין קטן שמוזר לי. בתהליך הריצה, הסקריפט מוציא למסך מספר רץ ואת שם השרת. משום מה הפלט של המספר הרץ "קופץ הצידה" וחוזר למקום מידי פעם.. נראה שבאופן שרירותי...
הסקריפט:
קוד:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set /a cnt=0
echo Host,Operating System,Service Pack,Domain,Ping? > result.csv
for /f %%i in (list.txt) do (
set /a cnt=!cnt!+1
echo !cnt!
echo %%i
echo.
ping -n 1 -w 10 %%i > nul
IF !ERRORLEVEL! == 0 (
reg query "\\%%i\HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDVersion 2>&1 | findstr /i "error service" | cut -f 3> tmp.txt
set /p MYSP=<tmp.txt
reg query "\\%%i\HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName 2>&1 | findstr /i "error product" | cut -f 3 > tmp.txt
set /p MYOS=<tmp.txt
reg query "\\%%i\HKLM\SYSTEM\CurrentControlSet\Services\Tcpip \Parameters" /v Domain 2>&1 | findstr /i "error domain" | cut -f 3 > tmp.txt
set /p MYDOM=<tmp.txt
echo %%i,!MYOS!,!MYSP!,!MYDOM!,YES >> result.csv
set MYSP=
set MYOS=
set MYDOM=
) ELSE (
echo %%i,,,,NO PING >> result.csv
)
)
ENDLOCAL
del tmp.txt
הפלט מוצג בתמונה עם דוגמא של ארבעה שרתים. כאשר הרשימה ארוכה יותר המספר חוזר למקומו מידי פעם..

אגב, אני מודע היטב לאפשרות להוציא את המידע באמצעות WMI, דרך קונסול או סקריפט VB. אני מעדיף את השיטה שלי מסיבות שונות.
תודה
_____________________________________
לבלוג שלי - Sandbox

Pinky: Ha ha ha ha, Troz!
Brain: What is troz?
Pinky: Why that's Zort in a mirror. Huh huh, Troz!
|