Jump to content

Ody

Members
  • Gesamte Inhalte

    16
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von Ody

  1. Hallo Massaraksch, gut das du nochmal nachfragst weil mir sonst mein Fehler bei der geposteten Lösung nicht aufgefallen wäre. Du hast vollkommen recht, jetzt verstehe ich auch dein SKIP Hinweis: C:\>reg query HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MeinProgram\ /v Pfad skip 1 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MeinProgram skip 2 Pfad REG_SZ C:\Program Files (x86)\Mein Program\ Ich dachte ich muss die ersten beiden Zeile ignorieren was nach meinen erneuten Tests, wie du schon sagtest unsinnig ist. Deine Variante fügt Token 3 (%%i) mit dem Rest * (%%j) zusammen, leider geht dabei das Leerzeichen zwischen den beiden Variablen verloren, also zwischen "C:\Program" und "Files...". Lösung ist ab Token 2 zu Starten und * also nur %%j zu verwenden: for /f "tokens=2,*" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MeinProgram" /v Pfad') do set VAR=%%j Nochmal Danke an Alle und besonders an lefg und massaraksch! Grüße Ody
  2. Es für jemanden der nicht so viel Ahnung hat wie du nicht immer einfach das wesentliche herauszufiltern, aber dafür gibt es ja solche Foren und nette Menschen wie dich die versuchen die richtigen Anstöße zu geben, nochmals Danke an dieser Stelle. p.s. Suchen bevor man postet sollte natürlich immer die erste Wahl sein, was ich auch gemacht hatte
  3. Ja lefg du hast ja sowas von recht zu dem Zeitpunkt war mir aber das zuweisen der automatischen Folgevariablen noch nicht ganz klar, daher hat es bei meinen Tests auch nie funktioniert :-/
  4. Hallo zusammen, Dank lefg und massaraksch ist mir der Fehler in meinem Post aufgefallen und hab ihn deshalb entfernt um andere nicht zu verwirren. Siehe Post 32 mit der Lösung
  5. Hallo und willkommen, ich hatte ein ähnliches Problem, wenn dein Pfad fix ist hast du hier ein Beispiel wie man es auslesen und als Variable definieren kann. Mein Problem war das ich flexibel auf Leerzeichen eingehen wollte was mit Batch nur mehr als umständlich oder gar nicht geht: http://www.mcseboard.de/topic/206525-batch-variable-aus-registrierung-mit-leerzeichen/?p=1296103 weiter Vorschläge waren den Wert als Systemvariable zu setzten oder es über PowerShell zu lösen. Vielleicht hilft dir das weiter, viel Erfolg! Grüße Ody
  6. Hallo zusammen, dann tut es mir leid wenn ich euch damit aufgehalten habe! Ich werde es vorerst mit Standards umgehen und mir zahnis Vorschlag zu Herzen nehmen. Es war für mich trotzdem sehr aufschlussreiche, dafür Danke an die Runde! Grüße Ody
  7. @lefg Ich möchte mit dem ausgelesenen Pfad innerhalb des Programms Aktionen ausführen wie z.B. Exen starten und/oder über Taskkill wieder beenden, Logfiles auslesen / kopieren, Sicherungen von Unterordnern durchführen. @Sunny61 Mein Ansatz ist (war!?) nichts am System zu verändern und flexibel bezüglich der Umgebungen zu sein. Wenn es nicht geht muss ich mir was anderes überlegen. Bezüglich der Anführungszeichen hab ich alles mögliche versucht, nachdem ich aber den Wert erst über "Tricks" For und reg query rauskriege hat das nicht geklappt. Theoretisch würde es reichen wenn ich es schaffe am Anfang und alternativ am Ende Anführungszeichen zu setzten. Das Ende könnte ich wieder als Klartext definieren wenn ich mein copy, Taskkill usw ausführe.
  8. Hallo zusammen, herzlichen Dank für euer weiteres Feedback! @lefg Es gibt in der Registrierung eine Zeichenfolge "Pfad" wo das Installationsverzeichnis des Programms liegt. Beispiel C:\Program Files (x68)\Program ich hab mir für meine Tests einfach einen Schlüssel angelegt mit dem ich rumspiele. @Sunny61 Das ist ein guter Ansatz, somit kann ich evtl. das Thema "Program Files", "Programme" bzw. "Program Files (x86)" umgehen. Das hilft mir aber nicht weiter wenn der Unterordner des Programs auch ein Leerzeichen z.B. C:\Program Files (x86)\Mein Program\ hat. @daabm SETX kannte ich noch nicht, ich hab mir das mal angeschaut, so wie ich das sehe werden da aber fix Umgebungsvariablen gesetzt die auch nach dem ausführen der Batch weiter zur Verfügung stehen. Ich möchte ja nur zur Laufzeit den Pfad aus der Registrierung auslesen und verarbeiten. Bei meinen Tests hab ich es aber nicht geschafft den Wert in die Variable zu schreiben. Aber da Teste ich noch weiter. @massaraksch Da hast du wohl recht, ich bin aber auch von Gestern :-) Der skip ignoriert die ersten beiden Zeilen was dir der Reg query ausgibt, ich will nur die Zeile wo der Wert der Zeichenfolge enthalten ist, die wiederum wird mit Token genauer analysiert. @All ich dachte mir das es mit for /f recht einfach möglich ist den Wert komplett in eine temporäre Variable zu schreiben und zu verarbeiten. So wie es aussieht ist es anscheinend nicht so einfach und ich werde um den Vorschlag von zahni nicht rumkommen? Vielleicht noch mit zusätlicher Prüfung von findstr? Hab da mal versucht die Leerzeichen zu ermitteln, aber das hat hintern und vorne nicht hingehauen. Beste Grüße Ody
  9. Guten Abend zusammen, erst mal vielen Dank für eure Rückmeldung und Bemühungen! @lefg Ich hab natürlich vor dem Post schon versucht eine Lösung zu finden, bin auch auf zwei Einträge gestoßen wo es um Werte aus Registrierung auslesen usw. geht bei einem wurde dann genau die Frage gestellt (von einem anderen User) und die Antworten blieben aus :-) Das mit den Tokens ist ein Ansatz, aber was bringt es mir einen Wert auszulesen wenn ich wissen muss wie viele Leerzeichen er enthält dann doch lieber gleich im Batchfile mit set fixen und Standards definieren. Aber Flexibel wäre doch einfach zu schön :-) ich suche auf jeden Fall weiter. Deine Idee mit delims=°, Tokens=3,* (Da hatte ich kurz Hoffnung) hat leider nicht funktioniert @blub hab ich versucht: FEHLER: Der angegebene Registrierungsschlüssel bzw. Wert wurde nicht gefunden. @zahni mist er hat mich entdeckt :-) Du wirst lachen, aber ich hab mir sogar Tutorials angeschaut und werde mich da nach und nach rantasten aber Veränderung dauert bekanntlich seine Zeit und Lösungen wollen meistens gestern schon durch die Tür. Aber ich hab es mir zu Herzen genommen, wie gesagt bin kein scripter und daher nur sehr langsam bei sowas. Danke! Euch allen jetzt erst mal ein schönes Wochenende! @lefg Nachdem man nur mit testen lernen und wieder testen sein Wissen erweitern kann, hab ich mir deine Token Idee angeschaut: for /f "tokens=3,4,5 skip=2 delims= " %a in ('reg query "%REG%" /v Pfad') do set var1=%a&set var2=%b&set var3=%c set var=%var1% %var2% %var3% echo %var% In meinem Beispiel sind es 3 weitere Tokens Nummer 3=C:\Program Nummer 4=Files Nummer 5=(x86)\Programm\ nachdem mit delims das Leerzeichen als Trennzeichen gesetzt ist, alle zusammen in eine neue Variable Schreiben und dort die Leerzeichen wieder setzten. Resultat von %var%: C:\Program Files (x86)\Programm\ :-) Aber wie gesagt Flexibel wäre schön, da ich nicht weiß wie viele Leerzeichen im Pfad in der Registrierung stehen. Ich suche weiter und bin nach wie vor für Denkanstöße dankbar
  10. ja genau er gib nur alles bis zum ersten Leerzeichen aus
  11. Hallo Nobbyaushb, das hab ich auch in allen möglichen Varianten versucht aber nachdem der Wert direkt In der for Schleife ausgelesen und in die Variable geschrieben wird hab ich da ja nicht viel Möglichkeiten? Hab sogar mit usebackq ein bisschen rumgespielt. Grüße Ody Hi lefg, ich glaub nicht das ich damit ans Ziel komme, ich will den Pfad ja mit Leerzeichen weil er später verwendet wird um z.B. Dateien zu lesen oder exen zu öffnen. Ich muss aber auch gestehen das ich mit der Beschreibung von %PATH:str1=str2% nicht ganz klar kommen. LG Ody
  12. Hallo zusammen, ich hab wieder ein kleines Problem wo ich nicht weiterkomme. Ich möchte einen Wert aus der Windows Registrierung auslesen und in eine Variable schreiben. Soweit kein Problem Code: for /f "tokens=3 skip=2" %%i in ('reg query "%REG%" /v Pfad') do set VAR=%%i %REG% ist der Schlüssel der vorher definiert wurde mit "Pfad" wird die Zeichenfolge ausgewertet und in die Variable VAR geschrieben. Jetzt zu meinen Problem: Die Variable hat Leereichen was dafür sorgt das beim ersten Leerzeichen Schluss ist. Wert: C:\Program Files (x86)\Programm Wert in der Variable C:\Program ohne Leerzeichen Funktioniert es Problemlos. muss ich mit delims was definieren? Hab mehrere varianten versucht ohne das Ziel zu erreichen. Vielen Dank im voraus Ody
  13. Ody

    Batch mit Logfile

    Hallo Cybquest, super vielen Dank genau das was ich gesucht habe :-) Beste Grüße Ody
  14. Ody

    Batch mit Logfile

    Hallo Zahni, vielen Dank für den freundlichen Empfang :) Ich habe fast befürchtet das es auf Powershell oder autoit rauslaufen könnte, als "nicht Scripter" ist das mehr als mühsam da was taugliches zusammen zubekommen. zudem funktioniert Batch fast immer ohne großartig im OS was aktivieren zu müssen. Ich wäre daher dankbar wenn jemand noch Ideen hat.
  15. Ody

    Batch mit Logfile

    Hallo Expert, so habe ich es auch hinbekommen, ich hätte aber gerne Datum und Uhreit vor jeder Ausgabe damit auch die Verzögerungen der einzelnen Aufgaben ins Auge stechen. Hier ein Beispiel: ################ Start Batch deaktivieren ################ 02.03.2016 18:15:01,62 Beenden wurde vom Benutzer initiiert... 02.03.2016 18:15:08,59 Es wurde versucht Notepad.exe zu beenden. Resultat: 02.03.2016 18:15:11,31 FEHLER: Der Prozess "notepad.exe" wurde nicht gefunden. 02.03.2016 18:15:11,37 Es wurde versucht Notepad.exe zu beenden. Resultat: 02.03.2016 18:15:16,29 ERFOLGREICH: Der Prozess mit PID 148 (untergeordnetem Prozess von PID 3608) wurde beendet. 02.03.2016 18:15:16,37 usw.... ################ Ende Batch deaktivieren ################ ################ Start Batch aktivieren ################ 02.03.2016 18:22:15,32 Starten wurde vom Benutzer initiiert... 02.03.2016 18:22:15,38 Notepad wurde gestartet mit dem Errorlevel: 128 02.03.2016 18:22:20,31 usw... ################ Ende Batch aktivieren ################
  16. Hallo zusammen, ich habe bereits etwas recherchiert aber nicht wirklich eine Lösung gefunden. http://www.mcseboard.de/topic/191108-taskkill-sämtliche-ausgaben-in-txt-schreiben/?hl=%2Bbatch+%2Blog Hier war bereits ein erster Ansatz ersichtlich der geholfen hat Thema "2>&1" ergänzen damit auch dies ins Logfile umgelenkt wird. http://www.mcseboard.de/topic/184098-erfolgreich-nicht-erfolgreich-batch-in-log-file-schreiben/?hl=%2Bbatch+%2Blog Hier sind leider Keine Antworten enthalten Ich hoffe hier kann mir jemand weiterhelfen. Nun zu meinem Anliegen: Ich möglich eine Detailgenau Protokollierung in ein Logfile schreiben wo jeder Eintrag mit Datum %DATE% und Zeit %TIME% beginnt. Beispiel taskkill: @echo off taskkill /IM notepad.exe /F /T >> .\tmp.log 2>&1 pause Funktioniert super, aber eben ohne Datum und Uhrzeit vorneweg. Was auch immer ich versucht habe ich hab es nie vor die Zeile der eigentlichen Ausgabe bekommen. Resultat tmp.log: ERFOLGREICH: Der Prozess mit PID 1248 (untergeordnetem Prozess von PID 3608) wurde beendet. FEHLER: Der Prozess "notepad.exe" wurde nicht gefunden. ERFOLGREICH: Der Prozess mit PID 10420 (untergeordnetem Prozess von PID 3608) wurde beendet. ERFOLGREICH: Der Prozess mit PID 1248 (untergeordnetem Prozess von PID 3608) wurde beendet. FEHLER: Der Prozess "notepad.exe" wurde nicht gefunden. Das ganze ist bestimmt mit einer IF Schleife lösbar, nur hab ich dazu leider zu wenig Kenntnisse in der Hoffnung auf Erleuchtung durch euch. Gleich vorweg noch ein paar Fragen, Die Logdatei führt mehrere exen aus somit werde ich auch bestimmt eine verschachtelte IF Schleife brauchen. Hier noch ein Beispiel: for /f %%i in ('vmrun -T ws getGuestIPAddress %VM%') do Set ipvm=%%i Dies ermittelt die IP-Adresse eine Virtuellen Maschine unter vmware Workstation (%VM% Pfad zur .vmx Datei) und schreibt die IP-Adresse in %IPVM% Bekomm ich das auch in die Logdatei (Meldungen der exen natürlich vorausgesetzt), ansonsten schreibe ich selbst ein Eintrag wie z.B. echo %DATE% %TIME% vmware TESTSYSTEM wurde gestartet mit dem Errorlevel: %errorlevel%>> .\tmp.log Ein Errorlevel auszugeben scheint nicht unbedingt zielführend, da die Werte von exe zu exe abweichen und meist ein 128 oder 9009 zurückgibt. Muss man das Errorlevel eventuell zurücksetzten wenn immer wieder in einer Batch abgefragt wird? SETLOCAL ist z.B. auch gesetzt wobei das vermutlich kein Zusammenhang hat. Ich hoffe das sind nicht zu viele Fragen auf einmal. Vielen Dank im voraus für eure Feedback Grüße Ody
×
×
  • Neu erstellen...