sabcat
Goto Top

Batchabfrage zum Prüfen ob ein Prozess läuft

Hallo,

folgendes Script lief bis vor kurzem auf unseren WinXP Professional PC's ohne Probleme, jetzt auf ein mal nicht mehr.

@echo off

title Lotus Notes starten und Word-Makro-Sicherheit auf Mittel setzen

cls

regedit /s N:\ADB\Bat\WordSecurity_middle.reg

set $pfad=0

:: für Mobility Windows wird Notes mit Angabe zum INI-File gestartet, vgl. Icon)
if exist C:\Programme\Lotus\Notes\notes.exe (set $pfad=C:\Programme\Lotus\Notes\notes.exe =Z:\Lotus-Notes-Data\notes.ini)

if exist C:\"Program Files"\Lotus\Notes\notes.exe (set $pfad=C:\"Program Files"\Lotus\Notes\notes.exe)  

if "%$pfad%"=="0" goto no_notes  

(qprocess > find nlnotes.exe >NUL) || start %$pfad%
goto end

:no_notes
echo Lotus Notes nicht gefunden, bitte manuell starten.
pause
goto end

:end
set $pfad=

Folgende Situation soll damit gelöst werden:

Es sind bei uns in der Firma zwei verschiedene Betriebssysteminstallationen vorhanden, einmal XP Professional in englischer Version und einmal in deutscher. Auf das setzten der Makrosicherheit hat das keinen Einfluss, da der Registryeintrag in deutscher und englischer Version der selbe ist. Bei Lotus sieht das anders aus da die Installationsverzeichnisse unterschiedlich sind.


Ich habe schon mehere hier in den Foren gepostete Möglichkeiten durchprobiert aber das Script hakt immer wieder bei "qprocess > find" und bricht ab. Weiß von euch jemand noch eine Möglichkeit oder entdeckt den/die Fehler?

Danke für die Hilfe,

MfG sabcat

Content-Key: 106113

Url: https://administrator.de/contentid/106113

Printed on: April 19, 2024 at 20:04 o'clock

Mitglied: 60730
60730 Jan 15, 2009 at 10:46:26 (UTC)
Goto Top
Servus,

das sollte laufen, obwohl ein paar Schönheitsfehler drin sind.

set $pfad=C:\"Program Files"\Lotus\Notes\notes.exe
wäre "schöner
set "$pfad=C:\Program Files\Lotus\Notes\notes.exe"

Nimm mal die () heraus.

Gruß
Member: sabcat
sabcat Jan 15, 2009 at 12:17:17 (UTC)
Goto Top
Danke für die Antwort.

Wenn ich
set $pfad=C:\"Program Files"\Lotus\Notes\notes.exe
zu
set "$pfad=C:\Program Files\Lotus\Notes\notes.exe"
ändere kommt der Fehler "Windoes cannot fond 'C:\Program' please try [...]", also habe ich es wie oben gelassen.

Die Klammern habe ich heraus genommen, allerdings lief das Script dann immer noch nicht durch. jetzt habe ich
if "%$pfad%"=="0" goto no_notes
raus genommen und es funktioniert. Ich möchte aber ungern auf die Abfrage verzichten, der Code scheint aber richtig zu sein.

Kann es sein, dass die If-Abfrage das Script beendet wenn der Fall nicht zutrifft?
Member: Biber
Biber Jan 15, 2009 at 12:19:06 (UTC)
Goto Top
Moin sabcat,

willkommen im Forum.

Kann nicht sein.
Die Ausgabe von "qprocess" soll doch nicht eine Textdatei namens "find" erzeugen, sondern die Ausgabe von "qprocess [Parameter] "find nlnotes" soll ausgewertet werden.
Also:

... oder was auch immer qprocess für eine Syntax erwartet.
Das Utility kenn ich nicht. Falls da auch noch eine Bildschrimausgabe entsorgt werden muss, dann:

Grüße
Biber
Mitglied: 60730
60730 Jan 15, 2009 at 12:27:53 (UTC)
Goto Top
Servus Biber,

da hab ich doch glatt voll den Bock geschossen, aber nicht den, der dir aufgefallen ist face-wink

probier das mal aus:
qprocess > find cmd.exe && echo yes
bzw:
qprocess > find nix.exe && echo yes

"Merk"würdigerweise läuft der Befehl (zumindestens in der cmd (als batch nicht getestet)

Gruß

edit
/? hülft ja auch face-wink
qprocess nlnotes.exe && start %$pfad%
/edit
Member: sabcat
sabcat Jan 15, 2009 at 12:44:26 (UTC)
Goto Top
qprocess scheint nicht sonderlich wählerisch zu sein, hab das gerade auch alles mit einer batch getestet, funktioniert auch alles.

Das qprocess-Problem ist also erledigt, aktueller Stand des gesamten Scripts:
@echo off

title Lotus Notes starten und Word-Makro-Sicherheit auf Mittel setzen

cls

regedit /s N:\ADB\Bat\WordSecurity_middle.reg
echo Word Makrosicherheit auf Stufe Mittel gesetzt.

set $pfad=0

:: für Mobility Windows wird Notes mit Angabe zum INI-File gestartet, vgl. Icon)
if exist C:\Programme\Lotus\Notes\notes.exe (set $pfad=C:\Programme\Lotus\Notes\notes.exe 

=Z:\Lotus-Notes-Data\notes.ini)

if exist C:\"Program Files"\Lotus\Notes\notes.exe (set $pfad=C:\"Program Files"\Lotus\Notes\notes.exe)  
echo pfad=%$pfad%

if "%$pfad%"=="0" goto no_notes  

qprocess find nlnotes.exe || start %$pfad%
goto end

:no_notes
echo Lotus Notes nicht gefunden, bitte manuell starten.
pause
goto end

:end
set $pfad=
So jetzt hängt es wie oben beshrieben an der If
if "%$pfad%"=="0" goto no_notes
Member: Biber
Biber Jan 15, 2009 at 17:10:07 (UTC)
Goto Top
Moin sabcat,

So jetzt hängt es wie oben beshrieben an der If
if "%$pfad%"=="0" goto no_notes
Das kann aber auch daran liegen, dass Du unbeabsichtigt ein trailing blank am Ende dieser zuweisung stehen hast:

set $pfad=0

Ändere das mal explizit in
set "$pfad=0"

P.S. Wenn Du Variablen SETtest in Deiner Batch und nur da, dann solltest Du auch
@echo off & SetLocal
...schreiben statt nur "@echo off"

Grüße
Biber
Mitglied: 60730
60730 Jan 15, 2009 at 17:14:44 (UTC)
Goto Top
Zitat von @sabcat:
So jetzt hängt es wie oben beshrieben an der If
if "%$pfad%"=="0" goto no_notes

face-wink

Nimm mal in Zeile 10:
set $pfad=0 raus.
Zeile 20 wird dann:
if %$pfad%=="" goto no_notes

gruß
edit Biber ist früher aufgestanden face-wink
Hotly discussed
gleixnerdCheck of ZFW Firewallgleixnerd - 3 CommentsAlexWishaHow to set up and configure a Linux GRE tunnelAlexWisha - 3 CommentsjstrickerWIREGUARD VPN ON UDM PRO BEHIND FRITZBOX - HANDSHAKE DID NOT COMPLETEjstricker - 3 CommentsDaniEnd of Support dates for Office 2016, 2019 Apps und Productivity ServersDani - 1 Comment