Jump to content

Batchprogrammierung


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hi,

 

ich hab in letzter Zeit viel Spaß mit dem Erstellen von Batches und mache einfach mal einen Thread mit kleinen Tips dazu auf. Wahrscheinlich sagen einige Leute jetzt "baaah, es gibt doch VBScript" und haben recht damit, aber vom Zeitfaktor her ist nichts schneller gebaut als ein Batchfile.

 

Tip 1: Ping auf mehrere Rechner und Auswertung

---------------------------------------------------------------------

Erstellt eine Datei namens hosts.txt, in der Ihr Eure Systeme listet, getrennt mit CrLf. Dann geht hin und erstellt ein Batchfile namens pinger.cmd mit folgendem Inhalt:

 

@echo off

set host=hosts.txt

for /f %%i in (%host%) do (ping -n 1 %%i | find "Antwort" > nul ) && (@echo %%i ist online) || (@echo %%i ist offline)

 

Würde mich sehr freuen, wenn andere auch kleine Tips zu Batches hier posten.

 

Grüße,

Fritz

Link zu diesem Kommentar

Okay: Folgende batch erstellt ein Backup ausgewählter Ordner auf CD-RW mit der Kommandozeilenversion von Nero:

 

@echo off

set Ziel="%date%"

 

rem Die Variable Ziel bestimmt später den Namen der CD, nämlich das aktuelle Datum

 

xcopy /d /y /e /i H:\Ordner1 J:\backbrenn\Ordner1

xcopy /d /y /e /i H:\Ordner2 J:\backbrenn\ordner2

xcopy /d /y /e /i H:\Ordner3 J:\backbrenn\Ordner3

 

rem Alle Daten werden in einen temporären Backbrennordner verschoben, da Nero per

rem Kommandozeile nur ein Ordner übergeben werden kann (oder weiss jemand was anderes?)

 

C:\Programme\Ahead\Nero\NeroCmd.exe --write --real --drivename f --speed 8 --iso %Ziel% --create_iso_fs --verify "F:\backbrenn\*.*" --recursive --detect_non_empty_cdrw --force_erase_cdrw

 

rem Nero starten: CD wird überprüft, wenn nicht leer gelöscht und

rem anschliessend das aktuelle rem Backup geschrieben und überprüft- evtl rem Fehler siehe

rem neroerr.txt. Auf diese Weise hat ma immmer ein aktuelles Backup.

rem --drivename f = CD-Brenner

rem Achtung! CD- Laufwerk wird möglicherweise automatisch geöffnet

rem und wieder geschlossen - das ist okay so.

 

rmdir /s /q

 

rem Backbrennordner wird gelöscht.

 

shutdown -u

 

rem Rechner wird runtergefahren.Shutdown.exe muss auf dem Rechner sein.

rem Download-URL http://www.budja.com/shutdown/shutdown.exe. - geht nur mit W2k/XP

Link zu diesem Kommentar

Moin!

Auch eine nützliche Batch:

 

 

'Ordner und Dateien auflisten und in eine Textdatei wiedergeben

 

ordnername = "c:\"

textdatei = "C:\testdatei.txt"

 

Set IFileSystem3 = CreateObject("Scripting.FileSystemObject")

 

'auf den Ordnernamen zugreifen

Set IFolder = IFileSystem3.GetFolder(ordnername)

For each IFile in IFolder.Files

liste = liste & IFile.name & vbCrlf

 

next

 

msgbox liste

 

'Textdatei anlegen und überschreiben,

'falls schon vorhanden

Set ITextStream = IFileSystem3.CreateTextFile(textdatei, true)

 

 

'text schreiben

ITextStream.Write(liste)

 

 

Viel Spaß noch! ;)

Link zu diesem Kommentar

@echo Es wird die wichtig.msi auf dem Rechner installiert

 

net use L:\\softwareserver\msi

cd C:

md \msi

xcopy L:wichtig.msi "C:\msi\"

msiexec /a C:\msi\*.msi

pause

@echo Nur um die Installation zum Abschluss zu bringen, bevor die Ordner oder Netzlaufwerke wieder gelöscht werden. Nach installation beliebige Taste druecken

rmdir /s /q \Explorer

net use L: /del

 

zusatz das /a steht für admin installation.

nur eine möglichkeit msi pakete zu installieren, für gemischte umgebungen oder für admins ohne GPO´s

 

zu beachten ist auch das der text hinter dem 2te @echo nachher in einer zeile steht. sonst gibts fehler...

 

mfg

NetJay

Link zu diesem Kommentar

hier ein script was ich eine zeitlang verwendet habe um diverse statistiken mit rrdtool (http://www.rrdtool.org) zu erstellen. hier ein beispiel für eine apc usv anlage mit management karte wo diverse werte wie load, temperatur der sensoren, ladestande,... aufgezeichnet wurden. für die bedarfsplanung ist sowas wohl unumgänglich. ich habe es auf auf eine snmp abfrage gekürzt, wäre sonst etwas zu lange ;)

 

 

REM ### USV Status per SNMP verarbeiten ###

 

REM ### Datums Variable erzeugen ###

SET DATUMUPS=

DATE.EXE +%%s > DATEUPS.TXT

SET /P DATUMUPS= < DATEUPS.TXT

DEL DATEUPS.TXT

 

REM ### Daten per SNMP holen ###

snmpget 10.70.3.21 public .1.3.6.1.4.1.318.1.1.1.2.2.1.0 > UPS_BATT.TXT

 

REM ### Daten einlesen ###

SET /P upsbatt= <UPS_BATT.TXT

 

REM ### DATEN in RRD Datenbank speichern ###

RRDTOOL update upsbatt.RRD %DATUMUPS%:%upsbatt%

 

REM ### Grafik aus RRD Datenbank erzeugen ###

REM ### Externer Temperatur Sensor###

rrdtool graph ..\data\stats\upsbatt.gif --start -86400 --vertical-label "Battery Capacity" -w 600 -h 200 DEF:upsbatt=upsbatt.rrd:upsbatt:AVERAGE AREA:upsbatt#00ff00:"Battery Capacity"

 

 

am ende kommt ein kleines bild raus welches einfach in ner webseite eingebaut werden kann (siehe anhang). nachdem die hostzahl aber stark gestiegen ist und wir weit mehr werte aufzeichnen (switche, router, drucker, hdd verbrauch, temperaturen,...) wurde mir die sache zu aufwändig und ich hab auf cacti umgestellt (http://www.raxnet.net). damit ist es dank templates weit einfacher eine große anzahl an hosts zu verwalten.

post-19696-13567389182227_thumb.gif

Link zu diesem Kommentar

für alle die noch alte nt clients ohne sus client betreuen müssen, hier ein kleines script welches diese aufgabe mit psexec.exe (google) erledigt. es sind dazu 2 scripte notwendig, "remoteinstall.bat" wird gestartet und holt sich aus der textdatei "ipadressen.txt" die rechner die es updaten soll. auf diese clients wird zuerst die datei "patch.bat" kopiert welches dann mit psexec am entfernten client gestartet wird.

 

damit können zb auch die sasser/msblaster patches problemlos verteilt werden.

 

 

 

 

### Remoteinstall.bat:

 

rem @ECHO OFF

rem CLS

 

for /F %%i in (ipadressen.txt) do (

 

NET USE \\%%i\IPC$ /USER:adminuser password

COPY PATCH.BAT \\%%i\C$\WINNT\

PSEXEC \\%%i -u adminuser -p password C:\WINNT\PATCH.BAT

DEL \\%%i\C$\WINNT\PATCH.BAT

NET USE \\%%i\IPC$ /D

 

)

 

########################

 

 

 

### patch.bat

 

@ECHO OFF

CLS

 

IF EXIST "%WINDIR%\PROFILES\ALL USERS\Startmen\." GOTO NT

IF EXIST "%ALLUSERSPROFILE%\." GOTO W2K

GOTO ENDE

 

:NT

net use \\server\ipc$ password /user:adminuser

\\server2\install\TEMP\patch.exe /quiet /norestart

net use \\server\ipc$ /d

GOTO ENDE

 

:W2K

GOTO ENDE

 

:ENDE

Link zu diesem Kommentar

Hi,

 

hier ein Batchfile, das ich benutzt habe, um die Installation von NAI ViruScan 7.1 auf Systemen zu checken. Es

 

-liest die zu scannenden Hosts aus einer Datei namens "host.txt" (Hostname, mit CrLf getrennt)

-pingt den Host an - wenn keine Antwort erfolgt, wird der nächste Host gelesen

-wenn der Host online ist, wird remote geprüft, ob die drei Prozesse laufen, die zu den NAI-Diensten gehören

-Ausgabe erfolgt am Bildschirm und in drei Textfiles (offline, ok, Fehler)

 

Ihr braucht "tasklist.exe" (WindowsXP). Verwendet keine Prozess/Dienstenamen über 15 Zeichen, denn die werden teilweise gekappt. Der "find" - Befehl kommt aber auch mit Teilstrings klar, es ist also kein Problem.

 

Viele Grüße,

Fritz

 

rem --------------------------------------------------------------------------

rem Start des Batchfiles

 

@echo off

cls

@echo Checkscript fuer NAI ViruScan7.1 - Version 0.2

@echo Fritzo 01.07.2004

 

rem ------------------File-Namen

set host=host.txt

set file_pos=NAI_ok.txt

set file_neg=NAI_Fehler.txt

set file_off=NAI_offline.txt

 

rem ------------------Prozessnamen

set b1=FrameworkServic

set b2=mcshield.exe

set b3=vstskmgr.exe

 

rem ------------------Dienstnamen

set d1=McAfee Framework Service

set d2=McShield

set d3=McTaskManager

 

rem ------------------Ergebnis-Files loeschen

@echo Check auf bereits vorhandene Files mit Ergebnissen

@echo.

if exist %file_pos% del %file_pos% && (@echo File %file_pos% wurde geloescht, ok) || (@echo File %file_pos% nicht vorhanden, ok)

if exist %file_neg% del %file_neg% && (@echo File %file_neg% wurde geloescht, ok) || (@echo File %file_neg% nicht vorhanden, ok)

if exist %file_off% del %file_off% && (@echo File %file_off% wurde geloescht, ok) || (@echo File %file_off% nicht vorhanden, ok)

@echo.

@echo.

 

rem ------------------Loop Start

for /f %%i in (%host%) do (ping -n 1 %%i | find "Antwort" > nul ) && (

 

@echo -----------------------------------------------

@echo Host: %%i ist online

 

tasklist /s \\%%i | find /i "%b1%" > nul && (echo %%i - Dienst %d1% laeuft >> %file_pos% && echo Dienst %d1% laeuft) || (echo %%i - Dienst %d1% laeuft nicht >> %file_neg% && echo Dienst %d1% laeuft nicht)

 

tasklist /s \\%%i | find /i "%b2%" > nul && (echo %%i - Dienst %d2% laeuft >> %file_pos% && echo Dienst %d2% laeuft) || (echo %%i - Dienst %d2% laeuft nicht >> %file_neg% && echo Dienst %d2% laeuft nicht)

 

tasklist /s \\%%i | find /i "%b3%" > nul && (echo %%i - Dienst %d3% laeuft >> %file_pos% && echo Dienst %d3% laeuft) || (echo %%i - Dienst %d3% laeuft nicht >> %file_neg% && echo Dienst %d3% laeuft nicht)

) || (

@echo -----------------------------------------------

(@echo Host %%i ist offline && @echo Host %%i ist offline >> %file_off%)

)

rem ------------------Loop Ende

 

rem Ende des Batchfiles

rem -------------------------------------------------------------------------------

Link zu diesem Kommentar
Original geschrieben von psytekk

Also msi packete installier ich via GPO :) geht einfacher :)

 

???

was steht denn in der beschreibung???

schon mal softwareverteilung mit GPO an den users ordner in der ads gehängt?

schon mal GPO´s für win98 und oder NT gemacht? nö

für solche fälle ist das, hätt ich vielleicht dabeischreiben sollen...

 

 

 

 

mfg

NetJay

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...