kaioo2509
Goto Top

Shell Command Auslesen

Problem:

Eine von mir gekaufte Software [A] (Szenerien Generator) startet eine seperat gekaufte Software [B] (Visualisierungs-Engine) via Dos Shell (Hardcoded in Software[A]) durch Aufruf der *.exe mit den benötigten Szenario-Parametern und schließt die Shell anschließend automatisch wieder (weder das Betrachten des Aufrufs noch das Drücken des Pause-Taste ist möglich).

Nun möchte ich jedoch Software[B] händisch mit selbst gewählten Parametern zur Visualisierung starten, ohne die Verwendung von Software [A], es gibt jedoch weder eine Schnittstellenbeschreibung noch eine /help oder /? funktion in der *.exe Datei

Frage: Gibt es eine Möglichkeit, den in der DOS-Shell aufgerufenen Befehl von Software[A] extern zu protokollieren bzw. auszulesen ?


Vielen Dank,
Gruß,
KaiOo

Content-Key: 98261

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

Printed on: April 19, 2024 at 16:04 o'clock

Member: predatorjaeger
predatorjaeger Oct 01, 2008 at 16:05:25 (UTC)
Goto Top
das einzige was mir jetzt auf anhieb einfallen würde, wäre die ausgabe direkt zu loggen, bsp: prog a >> log.txt --> log.txt enthält dann die ausgabe v. prog a
vlt hilft es dir was
Mitglied: 60730
60730 Oct 01, 2008 at 16:19:28 (UTC)
Goto Top
Servus,

machs mal so herum:

  • kopiere Notepad.exe dorthin - wo Programm b liegt.
  • gib Programm B den Namen "ProgramB.exe"
  • gib der Notepad kopie den "richtigen Namen" von ProgrammB
  • starte Programm A
  • "merke dir die Fehlermeldung, die im Notepad Popupfenster steht

Gruß
Member: bastla
bastla Oct 01, 2008 at 21:50:29 (UTC)
Goto Top
Hallo Kaioo2509!

Falls Software [B] lange genug läuft, dass Du zwischenzeitlich den folgenden Batch ausführen kannst, sollte die beim Aufruf verwendete Kommandozeile angezeigt werden:
@echo off & setlocal
set "Prog=calc.exe"  

rem Demo
start "Demo" "%Systemroot%\System32\calc" /mit /diesen /sinnlosen /Parametern  
rem

set G=%temp%\GetCommandline.vbs
>%G%  echo Set WMI=GetObject("winmgmts:\\.\root\CIMV2"):Set Items= _  
>>%G% echo WMI.ExecQuery("SELECT * FROM Win32_Process WHERE name='%Prog%'")  
>>%G% echo For Each Item In Items: WScript.Echo Item.CommandLine:Next

cscript //nologo %G%
pause
Anstelle von "calc.exe" ist in Zeile 2 natürlich der Name (ohne Pfadangabe) der "Software [B].exe-Datei" einzutragen, und die Zeilen 4 bis 6 dienen nur als Demo unter Verwendung des Windows-Rechners (der die angegebenen Parameter nicht weiter übel nimmt face-wink) und können ersatzlos gestrichen werden ...

Grüße
bastla