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

Alle anderen Fenster mit dem selben Titel schliessen

Frage Entwicklung Batch & Shell

Mitglied: ceerotolerance

ceerotolerance (Level 1) - Jetzt verbinden

31.07.2009, aktualisiert 17:25 Uhr, 4090 Aufrufe, 2 Kommentare

ich wollte immer nur eine Instanz meines Batch Skripts zulassen...

Hallo zusammen

ich habe wieder bisschen gebätscht.
Wie der Titel schon suggeriert, wollte ich, dass sich alle offenen Batch-Skripte mit dem selben Titel automatisch schliessen, wenn ich ein neues aufmache. Diese Aufgabe konnte ich einigermassen bewältigen. Nur leider hat es noch einige unschönheiten drin, welche vielleicht jemand mit mir ausmerzen kann.

Das Skript sieht bisher so aus:
01.
@echo off & setlocal 
02.
title=test.bat 
03.
 
04.
REM zweimal suchen, damit an erster Stelle durchnummeriert wird 
05.
tasklist /FI "WINDOWTITLE EQ test.bat" | findstr "cmd.exe" | findstr /n /c:"cmd.exe" >echo.txt 
06.
for /f "delims=:" %%i in ('findstr /n $ "echo.txt"') do set /a linecount=%%i  
07.
REM echo linecount = %linecount% 
08.
REM letzte Zeile beinhaltet die neuste PID die erhalten bleiben muss 
09.
for /F "tokens=1-3* delims=: " %%i in (echo.txt) do set /a count=%%i & set /a pid=%%k & call :Proc 
10.
 
11.
:Proc 
12.
	echo Instanz %count% hat PID: %PID% 
13.
	REM Letzte Instanz am Leben lassen 
14.
	if "%count%" == "%linecount%" goto :End 
15.
		echo kill it 
16.
		taskkill /FI "PID EQ %PID%" >nul 
17.
		goto :EOF 
18.
		 
19.
:End 
20.
	echo Ich darf leben... 
21.
	pause 
22.
	del echo.txt
Am schlimmsten ist es, dass :Proc noch ein zweites Mal aufgerufen wird, nachdem alle alten Fenster geschlossen wurden. Das schadet der Funktionalität zwar nicht, jedoch möchte ich gerne verstehen wieso das gemacht wird und wie ich es besser machen könnte. Ausserdem bin ich offen für Anregungen wie der Code sonst noch kürzer oder sonst irgendwie besser geschrieben werden könnte.

Bin offen für alle Inputs. Danke und Gruss

cee
Mitglied: Pjordorf
31.07.2009 um 17:38 Uhr
Hallo,

füge ein bei Zeile 15 und Zeile 30.


01.
> @echo off & setlocal 
02.
> title=test.bat 
03.
>  
04.
> REM zweimal suchen, damit an erster Stelle durchnummeriert wird 
05.
> tasklist /FI "WINDOWTITLE EQ test.bat" | findstr 
06.
> "cmd.exe" | findstr /n /c:"cmd.exe" >echo.txt 
07.
> for /f "delims=:" %%i in ('findstr /n $ 
08.
> "echo.txt"') do set /a linecount=%%i  
09.
> REM echo linecount = %linecount% 
10.
> REM letzte Zeile beinhaltet die neuste PID die erhalten bleiben muss 
11.
> for /F "tokens=1-3* delims=: " %%i in (echo.txt) do set /a 
12.
> count=%%i & set /a pid=%%k & call :Proc 
13.
 
14.
rem verhindern das Proc nochmals durchlaufen wenn es nichts mehr gibt 
15.
goto EOF 
16.
 
17.
> :Proc 
18.
> 	echo Instanz %count% hat PID: %PID% 
19.
> 	REM Letzte Instanz am Leben lassen 
20.
> 	if "%count%" == "%linecount%" goto :End 
21.
> 		echo kill it 
22.
> 		taskkill /FI "PID EQ %PID%" >nul 
23.
> 		goto :EOF 
24.
> 		 
25.
> :End 
26.
> 	echo Ich darf leben... 
27.
> 	pause 
28.
> 	del echo.txt 
29.
30.
>:EOF 
31.
32.
> 


Peter
Bitte warten ..
Mitglied: ceerotolerance
02.08.2009 um 09:18 Uhr
Ja das war's. Auf Zeile 30 ist das Label gar nicht nötig, da das Ende der Datei sowieso mit :EOF bezeichnet wird.

Kann mir jemand noch sagen, wie ich es machen könnte, ohne dass ich eine temporäre Datei benötige?

Das wär super. Danke und Gruss
cee
Bitte warten ..
Ähnliche Inhalte
Microsoft
Explorer Fenster schließen von Alleine
Frage von SnejmannMicrosoft10 Kommentare

Hallo zusammen, Ich habe da ein größeres Problem und hoffe das ihr mir helfen könnt. Ausgangspunkt ist folgender: Wir ...

Windows 8
Fenster schließen bei Aktualisierung der GPOs
Frage von LordBelaWindows 85 Kommentare

Hallo Zusammen, wir lassen in unserer Domäne Netzlaufwerke per GPOs mounten. Das Problem, das wir seit Windows 8 feststellen ...

Utilities
Putty: Schließen des Fenster nach Logout verhindern
gelöst Frage von Fenris14Utilities1 Kommentar

Guten Tag, ist es möglich das Schließen des Fenster beim Logout über SSH zu verhindern, um sich zum Beispiel ...

Windows Tools
Untergeordnete Fenster auf selben Monitor anzeigen
Frage von djevil-adWindows Tools2 Kommentare

Hallo, Ich habe leider Probleme mit meiner Dual Monitor Konfiguration, ich weiss zwar, dass Windows sich merkt, auf welchem ...

Neue Wissensbeiträge
Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 1 StundeSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 23 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 1 TagRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 4 TagenInternet19 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Brainstorming, einfachste Option 1 getrenntes LAN (mit WAN zugang)
Frage von 132954LAN, WAN, Wireless13 Kommentare

Hi, folgendes: Wir bekommen eine Glasfaser Leitung, Und das sollte Optional so aussehen: Ein Modem/Router für das WAN, ein ...

Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen12 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...

Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement12 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...