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
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, 4073 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
SEO
Falscher Website Titel bei Google (4)

Frage von Yanmai zum Thema SEO ...

Batch & Shell
gelöst Taskkill für bestimmtes cmd Fenster (6)

Frage von n0cturne zum Thema Batch & Shell ...

Webbrowser
T-Online-Login-Fenster öffnet unter Edge-Fenster (3)

Frage von achklein zum Thema Webbrowser ...

Administrator.de Feedback
gelöst Bug oder gewollt? Titel-Links in leerem Bereich klickbar (6)

Frage von 133417 zum Thema Administrator.de Feedback ...

Neue Wissensbeiträge
Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(2)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Windows 10

Windows 10: Erste Anmeldung Animation deaktivieren

(3)

Anleitung von alemanne21 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Netzwerkprotokolle
gelöst Leiten "dumme" Switches VLAN-Tags mit durch? (26)

Frage von coltseavers zum Thema Netzwerkprotokolle ...

Windows Server
gelöst Neues KB für W10 1607 und W2K16 wieder mal nicht im WSUS 3.0, hat das noch jemand? (16)

Frage von departure69 zum Thema Windows Server ...

Netzwerkgrundlagen
Kann auf Freigabe nicht Zugreifen (15)

Frage von leon123 zum Thema Netzwerkgrundlagen ...

Router & Routing
FTTH bzw FTTB Router (13)

Frage von ukulele-7 zum Thema Router & Routing ...