Jump to content

Relaunch 2018: Willkommen im neuen Forum - Das MCSEboard.de wurde runderneuert. Wir wünschen Euch viel Spaß an Board.

Melde dich an, um diesem Inhalt zu folgen  
Hyperionnn

Ausgabe von tasklist | find in Variable übergeben

Empfohlene Beiträge

Hallo liebe Programmierprofis,

 

DOS ist für mich 20 Jahre her und ich bekomme es einfach nicht selber gebacken.

 

Für einen komplexe Benchmarklauf brauche ich die Anzahl der laufenden Programme, die dann über die Batch-Datei den Namen des Ergebnisses entsprechend festlegt:

 

Ich kriege es einfach nciht hin, ich hab auch noch nie mit Find und for und Tasklist gearbeitet - hab mir das alles zusammengegooglet - wahrscheinlich ist es nur eine Kleinigkeit:

@echo off
setlocal

:GetTotalMemory
for /F "skip=1" %%M in ('%SystemRoot%\System32\wbem\wmic.exe ComputerSystem get TotalPhysicalMemory') do set "TotalMemory=%%M" & goto GetAvailableMemory
:GetAvailableMemory
for /F "skip=1" %%M in ('%SystemRoot%\System32\wbem\wmic.exe OS get FreePhysicalMemory') do set "AvailableMemory=%%M" & goto ProcessValues
:ProcessValues
set "TotalMemory=%TotalMemory:~0,-6%"
set /A TotalMemory/=1073
set /A TotalMemory*=1024
set /A AvailableMemory/=1024
set /A UsedMemory=TotalMemory - AvailableMemory
set /A UsedPercent=(UsedMemory * 100) / TotalMemory

:echo Free memory:    %AvailableMemory% MB
:echo Total memory:   %TotalMemory% MB
:echo Used memory:    %UsedMemory% MB
:echo Memory usage:   %UsedPercent% %%

:::::::hier wirds noch korrekt ausgegeben - fällt dann weg, wenns funktioniert
TASKLIST /NH | FIND /C ".exe"
:pause - fällt dann weg, wenns funktioniert


REM -------------- HIER ist das Problem ------------------------
for /f %%i in ('TASKLIST /NH | FIND /C ".exe"') do Set AnzahlTasks=%%i
:::::::: Hier bricht die Batch ab

:pause - fällt dann weg, wenns funktioniert
:echo %AnzahlTasks% - fällt dann weg, wenns funktioniert
set "DateiName7=PCMark7Cmd.exe --secondarystorage=on --storagepath=C:\ --out=%RESULTDIR%\LenZ50-hddo-01024-064-%AnzahlTasks%-%AvailableMemory%-%UsedPercent%.pcmark-7-result"
:echo %DateiName7% - fällt dann weg, wenns funktioniert

echo %date:~0% - %time:~0,5%
rxpcc edit {86DC2354-794E-4CBD-89FF-45DE934F907E} -m 8192 -b 512 -s
rxpcc ls

PCMark.exe -repeat=3 -all=off -hdd=on LenZ50-hddo-08192-512-50-06904.pcr

:::::::::::::: da muß DateiName7 rein!
PCMark7Cmd.exe --secondarystorage=on --storagepath=C:\ --out=%DateiName7%

PCMark8Cmd.exe --secondarystorage=on --storagepath=C:\ --out=LenZ50-hddo-08192-512-50-06432.pcmark-8-result

rxpcc perf -a

echo %date:~0% - %time:~0,5%
rxpcc edit {86DC2354-794E-4CBD-89FF-45DE934F907E} -m 8192 -b 256 -s
rxpcc ls

:...
:...rxpcc edit {86DC2354-794E-4CBD-89FF-45DE934F907E} -m 8192 -b 128 -s
:...rxpcc edit {86DC2354-794E-4CBD-89FF-45DE934F907E} -m 8192 -b 064 -s
:...rxpcc edit {86DC2354-794E-4CBD-89FF-45DE934F907E} -m 8192 -b 032 -s :...
:...

endlocal

(Die Aufteilung in 2 Teile ist keine Absicht, irgendwas mit dem Code einfügen hab ich falsch gemacht, sorry)

 

Wie bekomme ich hier

set "DateiName7=PCMark7Cmd.exe --secondarystorage=on --storagepath=C:\ --out=%RESULTDIR%\LenZ50-hddo-01024-064-%AnzahlTasks%-%AvailableMemory%-%UsedPercent%>>>hier<<<.pcmark-7-result"

noch ein reales %-Zeichen hin?

 

Ich würde mich sehr freuen, wenn mir jemand helfen könnte... Sollte noch anderes drin sein, was unnötig ist, und ich nicht erkenne, bin auch dafür für Hinweise dankbar.

 

Vielen herzlichen Dank fürs Lesen, Eindenken und Antworten!

 

Elmar

bearbeitet von Hyperionnn

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hi,

 

bei Problemen einfach mal den Befehl direkt im CLI testen...

E:\>for /f %i in ('TASKLIST /NH | FIND /C ".exe"') do Set AnzahlTasks=%i
"|" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

Aha?

E:\>for /f %i in ('TASKLIST /NH ^| FIND /C ".exe"') do Set AnzahlTasks=%i
E:\>Set AnzahlTasks=76
E:\>echo %AnzahlTasks%
76

Voila! Das Pipe-Zeichen "escapen" mit ^

 

(nicht wundern... in der Batch natürlich wieder doppelte % nutzen)

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Jaaaaaaaaaaaaaaaaaaa!!!!

 

Das wars - Hurraaaaaaaaa!

 

Da wär ich nie-nie-nie draufgekommen - ganz herzlichen Dank!!! Da kann ich jetzt endlich die nächste Benchmarkrunde durchlaufen lassen.

 

Und ich habe für meinen Sohn wieder viel mehr Zeit.

 

:thumb1:   :jau:   :thumb1:

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
Melde dich an, um diesem Inhalt zu folgen  

×