138701
Goto Top

Prozesse in Zeiten aufteilen

Hallo zusammen,

Mein Ziel ist es, dass in einem Textdokument als Datenbank die bisher verbrachte Zeit eingetragen wird.
total=234
explorer=123
notepad=100
cmd=11
Also einmal die Gesamtzeit und für jeden Prozess eine einzelne Zeile.
Ich habe schon folgende Variablen:
-%task% (Der zurzeit im Vordergrund ausgeführte Prozess)
-%total% (Gesamtzeit bis jetzt)

Ich habe schon 3 Methoden, die mir sicher helfen können, komme jedoch mit keiner davon klar.

1.
call :timer Total %total%
call :string Total %total%
:string
for /f "tokens=2 delims==" %%a in ('findstr /iblc:"%~1=" "time.dat" 2^>nul') do set /a %~2=%%a  
exit /b
:timer
>"%up%\time.dat" (for /f "usebackq tokens=* delims=" %%a in ("%up%\time.dat") do for /f "tokens=1,2 delims==" %%b in ("%%a") do if /i "%%b" == "%SEARCH%" (echo(%%b=%~2) else (echo(%%a))  
exit /b

2.
@echo off & setlocal
set "DBFILE=db.txt"  
:menu
cls
echo 	[1] User anzeigen
echo 	[2] User erstellen
echo 	[3] User bearbeiten
echo 	[4] User löschen
choice /C 1234 /N
if %ERRORLEVEL%==4 goto :del
if %ERRORLEVEL%==3 goto :edit
if %ERRORLEVEL%==2 goto :create
if %ERRORLEVEL%==1 goto :show
goto :EOF
:show
cls
echo ==== BENUTZER ANZEIGEN ====
echo.
if not exist "%DBFILE%" goto menu  
echo NACHNAME, VORNAME
echo =================
for /f "usebackq tokens=1-2 delims=;" %%a in ("%DBFILE%") DO echo %%b, %%a  
echo.
pause
goto menu
:create
cls
echo ==== BENUTZER ERSTELLEN ====
echo.
set /p "VORNAME=Vorname eingeben: "  
if "%VORNAME%" == "" (  
	echo Fehler! Vorname darf nicht leer sein
	echo.
	timeout /t 2
	goto create
)
set /p "NACHNAME=Nachname eingeben: "  
if "%NACHNAME%" == "" (  
	echo Fehler! Nachname darf nicht leer sein
	echo.
	timeout /t 2
	goto create
)
echo.
call :USEREXISTS "%VORNAME%;%NACHNAME%" && (  
	echo User mit diesen Namen existiert schon! Eingabe bitte wiederholen.
	echo.
	timeout /t 2
	goto CREATEUSER
) || (
  >>"%DBFILE%" echo.%VORNAME%;%NACHNAME%  
	echo Benutzer '%VORNAME% %NACHNAME%' wurde gespeichert.  
	echo.
	timeout /t 2
)
goto menu

:edit
cls
echo ==== BENUTZER BEARBEITEN ====
echo.
set /p "VORNAME=Bestehenden Vornamen des Users eingeben: "  
set /p "NACHNAME=Bestehenden Nachnamen des Users eingeben: "  
echo.
call :USEREXISTS "%VORNAME%;%NACHNAME%" && (  
	findstr /ilvc:"%VORNAME%;%NACHNAME%" "%DBFILE%" >"%TEMP%\db.txt" & move "%TEMP%\db.txt" "%DBFILE%" >nul  
	set /p "VORNAME=Neuen Vornamen eingeben: "  
	set /p "NACHNAME=Neuen Nachnamen eingeben: "  
	setlocal ENABLEDELAYEDEXPANSION
	>>"%DBFILE%" echo.!VORNAME!;!NACHNAME!  
	echo.
	echo. Benutzer '!VORNAME! !NACHNAME!' wurde erstellt.  
	endlocal
	timeout /t 2
	goto menu
) || (
	echo Benutzer '%VORNAME% %NACHNAME%' existiert nicht! Eingabe wiederholen.  
	echo.
	timeout /t 2
	goto edit
)
goto menu
:del
cls
echo Loeschen
set /p VORNAME=Vorname: 
set /p NACHNAME=Nachname: 
echo.
call :USEREXISTS "%VORNAME%;%NACHNAME%" && (  
	findstr /ilvc:"%VORNAME%;%NACHNAME%" "%DBFILE%" >"%TEMP%\db.txt" & move "%TEMP%\db.txt" "%DBFILE%" >nul  
	goto menu
) else goto del
:USEREXISTS
findstr /ibelc:"%~1" "%DBFILE%" >nul 2>&1 && exit /b 0 || exit /b 1  

3.
@echo off
set /a count=0
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "test.txt"') do set "n%%i=%%j"  
:start
set /a count+=1
if defined n%count% goto start
set /a free=%count%
echo -%free%-%n10%-
pause

Content-Key: 438981

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

Ausgedruckt am: 29.03.2024 um 05:03 Uhr

Mitglied: GrueneSosseMitSpeck
GrueneSosseMitSpeck 11.04.2019 um 15:51:16 Uhr
Goto Top
die verbrauchte Zeit kannst du nur über WMI aus den Windows Performancecountern extrahieren.
In der Windows API ist das als "processtime" gemessen, im Windows Perfmon unter "process" - Process name - <all instances> %elapsed time%