Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch-Programmierung - Wo ist der Fehler?

Frage Entwicklung Batch & Shell

Mitglied: odicin

odicin (Level 1) - Jetzt verbinden

12.05.2006, aktualisiert 13.05.2006, 5391 Aufrufe, 6 Kommentare

Folgende Problemstellung:
Ein Programm wird vom Server aus von einem Client aktualisiert. Auf dem Server ist eine Datei mit einer Versionsnummer, im Programmverzeichnis des Clients auch. Ist die auf dem Server eine höhere, wird aktualisiert. Das ganze läuft übers Login-Script bei Anmeldung des Clients. Soweit so gut. Wenn das Programm allerdings vom Client übers Autostart-Menü gestartet wird, kann die Aktualisierung nicht korrekt ausgeführt werden, da Teile des Programms im Zugriff sind. Mittels pskill (von Sysinternals) kann ich das Programm vor der Aktualisierung zwar schließen, allerdings soll es natürlich nur dann geschlossen werden, wenn eine Aktualisierung ansteht. Folgendes Script ist im Moment im Einsatz, funktioniert aber nicht ordnungsgemäß. Das Programm wird im Moment immer geschlossen.

<-- beginn code -->
FOR /F "TOKENS=1*" %%a IN (\\SERVER\Programm\Update_Client\UpdateVersion.Dat) DO (
SET /A server=%%a
)

FOR /F "TOKENS=1*" %%b IN (C:\Programme\Programm\UpdateVersion.Dat) DO (
SET /A lokal=%%b
IF NOT [%lokal%]==[%server%] \\SERVER\Programm\Update_Client\pskill.exe programm.exe
)
\\SERVER\Programm\Update_Client\UnattendedInstallation.exe
<-- end code -->

Wo liegt hier der Fehler? Normalerweise dürfte er die pskill nur dann ausführen, wenn die Versionsnummern nicht übereinstimmen. Es wird aber immer aufgerufen.

Gruß Odi
Mitglied: ahe
12.05.2006 um 14:39 Uhr
Hallo Odi,

mach' 'mal hier ein paar Leerzeichen, hinter bzw. vor den Gleichzeichen ...

IF NOT [%lokal%] == [%server%]

Danach hat es bei mir funktioniert. (Windows XP SP2)

mfg
Axel
Bitte warten ..
Mitglied: Biber
12.05.2006 um 18:57 Uhr
Moin Odi, Moin Axel,

ich sehe hier keinen Grund für ein Stochern im Nebel.

Fakt ist:
- pskill wird ausgeführt
- das kann nur sein, wenn [%lokal%] und [%server%] nicht gleich sind
- das wiederum können wir doch anzeigen lassen.

Problem werden eventuell nicht fehlende, sondern überzählige Leerzeichen sein, aber wozu spekulieren?
01.
FOR /F "TOKENS=1*" %%a IN (\\SERVER\Programm\Update_Client\UpdateVersion.Dat) DO ( 
02.
SET /A "server=%%a" 
03.
04.
:: Rem Frage: Wozu auf Numerischen Wert casten??  
05.
:: Rem Frage :Und was,  wenn bei Version 2.00 oder 2.1a drinsteht?? 
06.
:: Rem Und warum "Tokens=1*" statt Tokens ganz wegzulassen? Wenn numerisch, gibts eh nur 1 Token 
07.
 
08.
FOR /F "TOKENS=1*" %%b IN (C:\Programme\Programm\UpdateVersion.Dat) DO ( 
09.
SET /A "lokal=%%b" 
10.
11.
:Rem Vergleich gehört nicht in die FOR..IN..DO-Anweisung 
12.
IF NOT [%lokal%]==[%server%] echo  Lokal [%lokal%] NEQ Server[%server%] !! 
13.
pause 
14.
IF NOT [%lokal%]==[%server%] \\SERVER\Programm\Update_Client\pskill.exe programm.exe 
15.
 
16.
\\SERVER\Programm\Update_Client\UnattendedInstallation.exe
Ich habe erstmal eine Anzeige (echo... paus) eingebaut zum Testen.
Da kannst Du erst mal sehen "wie" unterschiedlich die Werte sind.
Und ggf. mir Strg-C abbrechen, bevor der Pskill losrennt.
Vielleicht ist nur ein Leerzeichen/eine Leerzeile/unsinn in einer Versions.dat.
Oder eine der Dateien Fehlt. Du prüfst ja nichts davon ab.

HTH
Biber
Bitte warten ..
Mitglied: odicin
12.05.2006 um 19:24 Uhr
:: Rem Frage: Wozu auf Numerischen Wert
casten??
:: Rem Frage :Und was, wenn bei Version
2.00 oder 2.1a drinsteht??

Die Versionsnummern in den Datein werden nur für die UnattendedInstallation beim Update genutzt und sind numerische Zahlen, ab eins an. ATM irgendwo bei 40. Daher der numerische Wert. Es steht auch nur der Wert drin, nichts weiter. Das Programm hat, da hast du Recht andere Versionsnummern, aber die werden für das Client-Update nicht herrangezogen.

:: Rem Und warum "Tokens=1*" statt
Tokens ganz wegzulassen? Wenn numerisch,
gibts eh nur 1 Token

Hmm... wusst ich noch nich Gute Idee...

:Rem Vergleich gehört nicht in die
FOR..IN..DO-Anweisung

Ok


IF NOT [%lokal%]==[%server%] echo Lokal
[%lokal%] NEQ Server[%server%] !!
pause
IF NOT [%lokal%]==[%server%]
\\SERVER\Programm\Update_Client\pskill.exe
programm.exe
Ich habe erstmal eine Anzeige (echo... paus)
eingebaut zum Testen.
Da kannst Du erst mal sehen "wie"
unterschiedlich die Werte sind.

Ok, werd ich ausprobieren.

Oder eine der Dateien Fehlt. Du prüfst
ja nichts davon ab.

Brauche ich eigentlich nicht, da wenn angenommen auf demClient die Datei fehlt, ist dort das Programm nicht installiert und der Aufruf von pskill geht am Clientrechner ins Leere. Ist zwar nicht schön, richtet aber in dem Fall am Client-Rechner auch keinen Schaden an.

Gruß Odi
Bitte warten ..
Mitglied: odicin
12.05.2006 um 20:30 Uhr
Ergebnis: Die Sache funktioniert. Das einzige was ich geändert habe, war die IF NOT-Abfrage nicht in der FOR-Schleife laufen zu lassen. Das eingebaute Echo hatte auch die korrekten Parameter angezeigt und ich hab die ganze Sache auch nochmal zur Sicherheit am entsprechenden Client-Rechner getestet.

Mich wundert es zwar ein wenig das es daran gelegen haben soll, aber nun gut. Jetzt läuft die Sache.

Gruß Odi
Bitte warten ..
Mitglied: Biber
12.05.2006 um 22:06 Uhr
Moin Odi,

fein, wenn es jetzt läuft - dann könnten wir beide jetzt eigentlich mit dem Wochenende anfangen..

Ein Tipp noch:
Die zwei Zeilen

IF NOT [%lokal%]==[%server%] echo Lokal [%lokal%] NEQ Server[%server%] !!
pause

würde ich nicht ganz entsorgen.
Sondern grundsätzlich jeden Unterschied/Update in eine Serverlogdatei schreiben.

IF NOT [%lokal%]==[%server%] (
echo %date% %computername% von [%lokal%] auf [%server%] >>serverXY\freigabeZ\Clientupdates.log
)

Dann kannst Du hinterher sehen, wer wann upgedated hat und warum.

Schönes Wochenende
Biber
Bitte warten ..
Mitglied: odicin
13.05.2006 um 17:46 Uhr
Is ne richtig gute Idee Biber, werd ich einbauen.

Gruß Odi
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch Programmierung IF Abfragen
gelöst Frage von PanubuBatch & Shell8 Kommentare

Hallo zusammen, ich möchte gerne einige IF-Abfragen in einer Batch programmieren, was allerdings nicht so möchte wie ich. Er ...

HTML
HTML Programmierung
Frage von Alex29HTML5 Kommentare

Hallo zusammen, ich wollte mein Haus etwas smarter machen und habe daher nun einige Microcontroller laufen, die einige Steuerungsfunktionen ...

VB for Applications
VBA Programmierung
Frage von specialuserVB for Applications4 Kommentare

Hallo zusammen, der Wert aus Zelle L30 und N30 soll ins wb2 kopiert werden funktionier so weit auch ganz ...

Entwicklung
Art der Programmierung
gelöst Frage von BenjieEntwicklung2 Kommentare

Hallo Zusammen, ich suche bestimmte Suchbegriffe und Stichwörter bezüglich der Programmierung einer Website. Hat von euch jemand einen Tipp ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 4 StundenWindows 10

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 5 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 19 StundenInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 23 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte15 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...