Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Fehler im Batchscript - UpdateManager

Frage Entwicklung

Mitglied: nicolasduke

nicolasduke (Level 1) - Jetzt verbinden

17.07.2008, aktualisiert 21.07.2008, 2736 Aufrufe, 6 Kommentare

Hallo Leute,

wie der Titel schon sagt, bin ich auf der Suche nach einem Tool zur Überprüfung meiner Batch Quelltexte...
Kennte jemand von euch entsprechende Tools?

Oder könnte sich jemand folgenden Quelltext ansehen -> Funktioniert irgendwie nicht....

01.
title Update-Manager for BEISPIEL-PROGRAMM 
02.
setlocal enabledelayedexpansion  
03.
SET versionsnummer=5.3.1.3 
04.
set "found=0"  
05.
FOR /F "tokens=1,2,3 delims=," %%A IN ('"WMIC product get name,version /FORMAT:csv"') DO (  
06.
set "Program=%%B"  
07.
set "Version=%%C"  
08.
if "!PROGRAM!"=="BEISPIEL-PROGRAMM" (  
09.
set "found=1"  
10.
if not "!VERSION:~0,-1!"=="%versionsnummer%" set UpdatenVar=Möchten Sie BEISPIEL-PROGRAMM 5.3.1.3 installieren?(Yes/No) 
11.
if %UPDATENVAR%==Yes call D:\Starte BEISPIEL-PROGRAMM installer.bat 
12.
if "!VERSION:~0,-1!"=="%Versionsnummer%" echo OK!  
13.
)  
14.
)  
15.
)  
16.
rem Anzeige aller Programme "REM" entfernen.  
17.
rem echo "!PROGRAM!", "!VERSION:~0,-1!"  
18.
IF "!found!"=="0" call D:\Starte BEISPIEL-PROGRAMM installer.bat


PS: Vorab schon mal besten Dank für die sicherlich recht hilfreichen Antworten von euch...
Mitglied: 60730
17.07.2008 um 17:27 Uhr
Servus,

<[code]> <[/Code]>
01.
set "Program=%%B"  
02.
if "!PROGRAM!"=="BEISPIEL-PROGRAMM" ( 
03.
 
Ent weder oder
Program oder !Program! ????
Das gleiche bei Version...
Bitte warten ..
Mitglied: miniversum
17.07.2008 um 18:48 Uhr
Hier:
01.
if not "!VERSION:~0,-1!"=="%versionsnummer%" set UpdatenVar=Möchten Sie BEISPIEL-PROGRAMM 5.3.1.3 installieren?(Yes/No)
hast du ein "/p" nach dem set vergessen:
01.
if not "!VERSION:~0,-1!"=="%versionsnummer%" set /p UpdatenVar=Möchten Sie BEISPIEL-PROGRAMM 5.3.1.3 installieren?(Yes/No)
Bitte warten ..
Mitglied: Biber
17.07.2008 um 18:54 Uhr
Moin nicolasduke,

<OT>
falls ich es noch nicht erwähnt haben sollte: Ich mag keine ODER-Fragen.

Das hier wird wieder so ein Bandwurm-Beitrag, der NIE "gelöst" wird.

Bitte entscheide Dich:
  • sollen wir Dir den Schnipsel zum Laufen bringen?
  • oder suchst Du wirklich einen Batch-Parser?
  • Wenn letzteres - wer sollte so etwas geschrieben haben und wozu????

Meine Bitte: Ändere den Titel auf: "Fehler im Batchskript" oder so etwas.
</OT>

Grüße
Biber
Bitte warten ..
Mitglied: nicolasduke
20.07.2008 um 10:51 Uhr
Hallo Ihr,
zunächst besten Dank für eure Antworten. Irgendwie funktioniert das Teil immer noch nicht.

Die Batch macht vom prinzip her gar nichts, was sie ja eigentlich nicht sollte....
Woran's liegt, keine ahnung...

01.
title Update-Manager for BEISPIEL-PROGRAMM 
02.
@echo on 
03.
setlocal enabledelayedexpansion  
04.
SET versionsnummer=5.3.1.3 
05.
set "found=0"  
06.
FOR /F "tokens=1,2,3 delims=," %%A IN ('"WMIC product get name,version /FORMAT:csv"') DO (  
07.
set "!PROGRAM!=%%B"  
08.
set "!VERSION!=%%C"  
09.
if "!PROGRAM!"=="BEISPIEL-PROGRAMM" (  
10.
set "found=1"  
11.
if not "!VERSION:~0,-1!"=="%versionsnummer%" set /p UpdatenVar=Möchten Sie BEISPIEL-PROGRAMM 5.3.1.3 installieren?(Yes/No)  
12.
if %UPDATENVAR%==Yes call D:\Starte BEISPIEL-PROGRAMM installer.bat 
13.
if "!VERSION:~0,-1!"=="%Versionsnummer%" echo OK!  
14.
)  
15.
)  
16.
)  
17.
rem Anzeige aller Programme "REM" entfernen.  
18.
rem echo "!PROGRAM!", "!VERSION:~0,-1!"  
19.
IF "!found!"=="0" call D:\Starte BEISPIEL-PROGRAMM installer.bat

Bitte um Hilfe...

Beste Grüße
nicolasduke
Bitte warten ..
Mitglied: bastla
20.07.2008 um 22:44 Uhr
Hallo nicolasduke!

In den "set"-Zeilen ist kein Variablenbegrenzer (also auch nicht "!") nötig, daher:
01.
set "PROGRAM=%%B" 
02.
set "VERSION=%%C"
Weiter unten (beim Auswerten der Variablen %UPDATENVAR%) wäre dann wieder das "!" anstelle von "%" gefragt, also:
01.
if !UPDATENVAR!==Yes call D:\Starte BEISPIEL-PROGRAMM installer.bat
Leichter machst Du es den Benutzer/innen, wenn Du nicht die exakte Schreibweise des "Yes" überprüfst, sondern etwa nur den ersten Buchstaben, und auch da nicht auf Groß- oder Kleinschreibung bestehst, also etwa:
01.
if /i "!UPDATENVAR:~,1!"=="Y" call "D:\Starte BEISPIEL-PROGRAMM installer.bat"
Außerhalb der Schleife (zB für die Kontrolle von %found%) ist keine "delayedExpansion" erforderlich, daher wieder Variablenschreibweise wie gehabt:
01.
IF "%found%"=="0" call "D:\Starte BEISPIEL-PROGRAMM installer.bat"
Und falls ich mich nicht verzählt habe, hast Du eine schließende Klammer zuviel (oder auch eine zu wenig geöffnet ).

Grüße
bastla

P.S.: TimoBeil hat das mit den "<code></code>"-Tags als Formatierungshinweis gemeint ...
Bitte warten ..
Mitglied: nicolasduke
21.07.2008 um 15:37 Uhr
Also Leute,
der update manager funktioniert leider immer noch nicht. Ich bin irgendwie am verzweifeln.

Was macht das ding konkret?
- Die cmd startet, wie gehabt, bleibt länger offen als bisher und schließt sich gleich wieder.
- Egal ob die Programmversion veraltet ist oder nicht, die Installation startet nie.
- Der Benutzer kann darüberhinaus auch nie entscheiden, ob installiert werden soll oder nicht - klar, wie auch, wenn sich die cmd gleich wieder schließt...

Führe ich meinen Update-Manager unter cmd mit:
01.
start d:\clonecd updatemanager.bat
aus, dann öffnet sich immer der Installer.


Hier nochmal der Quelltext:
01.
title Update-Manager for CloneCD 
02.
@echo on 
03.
setlocal enabledelayedexpansion 
04.
SET versionsnummer=5.3.1.3 
05.
set "found=0" 
06.
FOR /F "tokens=1,2,3 delims=," %%A IN ('"WMIC product get name,version /FORMAT:csv"') DO ( 
07.
set "PROGRAM=%%B" 
08.
set "VERSION=%%C" 
09.
if "!PROGRAM!"=="CloneCD" ( 
10.
set "found=1" 
11.
if not "!VERSION:~0,-1!"=="%versionsnummer%" set /p 
12.
UpdatenVar=Möchten Sie CloneCD 5.3.1.3 installieren?(Yes/No) 
13.
if /i "!UPDATENVAR:~,1!"=="Y" call "D:\Starte CloneCD installer.bat" 
14.
if "!VERSION:~0,-1!"=="%Versionsnummer%" echo OK! 
15.
16.
17.
rem Anzeige aller Programme "REM" entfernen. 
18.
rem echo "!PROGRAM!", "!VERSION:~0,-1!" 
19.
IF "%found%"=="0" call D:\Starte CloneCD installer.bat

PS: Kann es vielleicht sein, dass WMIC sich nur auf Installationen bezieht, die mit dem Windows Installer installiert wurden?

Ich hab mir mal mit:
01.
WMIC /OUTPUT:Software.html Product get name,version /FORMAT:hform
eine Softwareliste erstellt und da zeigt's nur etwa die hälfte an Software an, die ich installiert habe...

Wie kann ich in meinem Quelltext nach allen, auf dem System installierten Programmen suchen lassen? Und nicht nur nach denen, die wahrscheinlich mit dem WindowsInstaller installiert wurden?

Hab hier mal einen anderen Quelltext gefunden - ob er was nützt, ich weis es nicht.:
01.
Public Sub check_sw() 
02.
 
03.
    Dim strComputer 
04.
    Dim objReg 
05.
    Dim strKeyPath 
06.
    Dim subkey 
07.
    Dim arrSubKeys 
08.
    Dim strDisplayName 
09.
    Dim strDisplayVersion 
10.
    Dim strPublisher 
11.
     
12.
'======================================================= 
13.
'DEFINIERT HKLM ALS HEX-VALUE (FÜR ENUMERATE) 
14.
'======================================================= 
15.
    Const HKLM = &H80000002 
16.
     
17.
    strComputer = "." 
18.
 
19.
    DoEvents 
20.
        frm_install.lbl_warten.Visible = True 
21.
    DoEvents 
22.
     
23.
    frm_install.lstb_software.Clear 
24.
     
25.
    Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
26.
    strComputer & "\root\default:StdRegProv") 
27.
     
28.
'======================================================= 
29.
'EINZULESENDE REGISTRY-WERTE 
30.
'======================================================= 
31.
    strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" 
32.
    objReg.EnumKey HKLM, strKeyPath, arrSubKeys 
33.
     
34.
'======================================================= 
35.
'REGISTRY-EINTRÄGE WERDEN AUFGESCHLÜSSELT 
36.
'======================================================= 
37.
    For Each subkey In arrSubKeys 
38.
        objReg.GetStringValue HKLM, strKeyPath & subkey, "DisplayName", strDisplayName 
39.
        objReg.GetStringValue HKLM, strKeyPath & subkey, "DisplayVersion", strDisplayVersion 
40.
        objReg.GetStringValue HKLM, strKeyPath & subkey, "Publisher", strPublisher 
41.
        If strDisplayName <> "" Then 
42.
            frm_install.lstb_software.AddItem (strDisplayName) & Chr(32) & strDisplayVersion & Chr(32) & strPublisher 
43.
        End If 
44.
    Next 
45.
    frm_install.chb_systemcheck.Value = vbChecked 
46.
    frm_install.lbl_warten.Visible = False 
47.
    Set objReg = Nothing

Grüße
nicolasduke
Bitte warten ..
Ähnliche Inhalte
Backup
gelöst Acronis Backup 11.5 Fehler VSS (5)

Frage von Hendrik2586 zum Thema Backup ...

Webbrowser
gelöst Internet Explorer muss vor der Installation aktualisiert werden - fehler (3)

Frage von Flosbrain zum Thema Webbrowser ...

Windows Server
Fehler Vertrauensstellung im AD (17)

Frage von thomas-99 zum Thema Windows Server ...

Batch & Shell
Bash sqlplus oder Bash Fehler? (7)

Frage von Marabunta zum Thema Batch & Shell ...

Neue Wissensbeiträge
Google Android

Cyanogenmod alternative Downloadquelle

(5)

Tipp von Lochkartenstanzer zum Thema Google Android ...

Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(5)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Statische Routen mit Shorewall, ISC-DHCP Server konfigurieren für Android Devices (25)

Frage von terminator zum Thema LAN, WAN, Wireless ...

Server
gelöst Wie erkennen, dass nur deutsche IPs Zugang zu einer Website haben? (22)

Frage von Coreknabe zum Thema Server ...

Hardware
16-20 Port POE Switch mit VLAN (19)

Frage von thomasreischer zum Thema Hardware ...

Windows Server
Exchange HyperV Prozessorlast (18)

Frage von theoberlin zum Thema Windows Server ...