Hyperionnn 0 Geschrieben 23. Februar 2017 Melden Teilen Geschrieben 23. Februar 2017 (bearbeitet) 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 23. Februar 2017 von Hyperionnn Zitieren Link zu diesem Kommentar
daabm 1.334 Geschrieben 23. Februar 2017 Melden Teilen Geschrieben 23. Februar 2017 Escaping auf der Commandline ist immer lustig - mal ist es ein Backtick, mal ein Caret. Ich glaub hier brauchst Du das Caret: ^% Zitieren Link zu diesem Kommentar
Hyperionnn 0 Geschrieben 23. Februar 2017 Autor Melden Teilen Geschrieben 23. Februar 2017 Dankeschön. Ich werde es ausprobieren. Für mein anderes Problem hast Du keine Lösung? Zitieren Link zu diesem Kommentar
Beste Lösung massaraksch 41 Geschrieben 23. Februar 2017 Beste Lösung Melden Teilen Geschrieben 23. Februar 2017 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) Zitieren Link zu diesem Kommentar
Hyperionnn 0 Geschrieben 23. Februar 2017 Autor Melden Teilen Geschrieben 23. Februar 2017 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: Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.