krümelmonster Geschrieben 18. Dezember 2008 Teilen Geschrieben 18. Dezember 2008 Hallo Leute, ich such mal ganz geschwind wen der sich ein Bisschen (hoffentlich mehr als ich) mit programmieren auskennt. Folgendes Problem: Ich möchte über ein Cmd-Script diverse Programme installieren, zwischedurch muss der Server ein paarmal neu starten und das Script wieder aufgreifen und fortfahren. jetzt bin ich auf das gestoßen: FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "HKLM\Software\Test" /v Hardware') DO SET Hardware=%%B Super sexy über REG QUERY kann ich den Registrykey auslesen, über do set kann ich eine Umgebungsvariable definieren welche ich dann in dem Script wieder aufgreifen kann und mittels eines Goto in die entsprechende Zeile hüpfen kann. Bloß, was sagt der Parameter "tokens" und "delims" aus? Wenn ich den Befehl auf einem PC ausführe bekomme ich eine Fehlermeldung: %%A ist syntaktisch an dieser Stelle nicht verarbeitbar. Ich bekomme den selben Fehler wenn ich das aufrufe: for /f "tokens=1-5 delims=/ " %%d in ("%date%") do rename "hope.txt" %%e-%%f-%%g.txt Aus der Dos Hilfe werde ich nicht wirklich schlau Kann mir da bitte, bitte wer helfen, wäre euch sehr dankbar Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
grey Geschrieben 18. Dezember 2008 Teilen Geschrieben 18. Dezember 2008 aus dem "Hilfe- und Supportcenter" delims=xxx Gibt einen Trennzeichensatz an. Dieser ersetzt den Standard-Trennzeichensatz aus Leerzeichen und Tabulator. tokens=x,y,m-n Gibt an, welche Tokens aus jeder Zeile bei jeder Iteration an den Rumpf der for-Anweisung übergeben werden. Als Ergebnis davon werden zusätzliche Variablennamen zugewiesen. Die Form m-n gibt den Bereich vom m-ten bis zum n-ten Token an. Wenn das letzte Zeichen in der Zeichenfolge tokens= ein Sternchen (*) ist, wird eine weitere Variable zugewiesen, die den übrigen Text der Zeile nach dem zuletzt geparsten Token empfängt. habs noch nie gebraucht.. weiß auch (noch) nicht inwieferns relevant für dich is oder was du eingeben "musst" hier is etwas anschaulicher am beispiel eines ping outputs http://www.robvanderwoude.com/ntfortokens.html Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
krümelmonster Geschrieben 18. Dezember 2008 Autor Teilen Geschrieben 18. Dezember 2008 Thx für die Antwort, das habe ich alles schon durch, wenn mir das bloß wer eindeutschen könnte... Das spuckt nämlich auch die Dos Hilfe aus. Zu Delims kann ich mir ja noch was vorstellen drunnter, aber wo kommt da for /f "tokens=1-5 delims=/ " %%d in ("%date%") do rename "hope.txt" %%e-%%f-%%g.txt ein "/" vor -> Soll ja ein Trennzeichen sein wenn ich es richtig verstehe Aber zu Tokens, da versteh ich nichtmal die Hilfe Evtl. bin ich ja auf dem falschen Dampfer unterwegs, ich könnte auch ein Lofile auslesen bei dem ich immer die letzte Zeile übergebe. Weiß wer wie das funktionieren könnte? Ach ja, den Link kannte ich schon Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
CptJack Geschrieben 18. Dezember 2008 Teilen Geschrieben 18. Dezember 2008 delims überschreibt den normalen dos delimiter space oder tab. tokens gibts an welche teile er pro zeile nehmen soll die durch den delimitier getrennt sind verarbeiten soll wenn du einen for befehl über die cmd zeile ausführst nimm die doppelten % weg das ist nur in skripts von nöten. richtig wäre für die date funktion auf deutschen rechnern (wo das datum durch "." getrennt ist) => for /f "tokens=1-3 delims=. " %d in ("%date%") do rename "hope.txt" %d-%e-%f.txt ich hoffe es ist damit etwas klarer ich bin leider nicht besonders gut darin anderen dinge zu erklären, aber spiel dich mit der zeile die ich gepostet hab und verändere die tokens dann wirds automatisch klar Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
krümelmonster Geschrieben 18. Dezember 2008 Autor Teilen Geschrieben 18. Dezember 2008 wenn du einen for befehl über die cmd zeile ausführst nimm die doppelten % weg das ist nur in skripts von nöten. ich hoffe es ist damit etwas klarer :love: :bounce: Das hats gebraucht Nochmal zum eigentlichen Befehl den ich wissen wollte: FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "HKLM\Software\Test" /v Hardware') DO SET Hardware=%%B was tut das tokens=2 jetzt genau? "delims= " sagt aus dass es nichts trennen soll? Außer das Standardtrennzeichen, Space und Tab? Kann ich es also weglassen? Für was ist das %%A? Der Rest sollte mir soweit klar sein. Ich will es wie oben schon geschrieben scripten, brauche ich dann das "%%" wieder - warum? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
krümelmonster Geschrieben 18. Dezember 2008 Autor Teilen Geschrieben 18. Dezember 2008 Nimmt die zweite Folge (token) einer Zeichenkette. Habe ich also ein Input ("Satz") und das Trennzeichen sind Leerzeichen, dann gibt Tokens=2 das zweite Wort aus. Kannst du mir das an dem Beispiel oben erklären? Ach ja, wenn ich jetzt die Befehlskette von oben ohne %% eingebe (sondern nur mit einem %) dann bekomme ich als Ausgabe SET Hardware=%VERSION 3.0 Das passt jetzt aber nicht ganz, da steht nämlich was anderes in dem Key drinnen :f: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
CptJack Geschrieben 18. Dezember 2008 Teilen Geschrieben 18. Dezember 2008 http://www.robvanderwoude.com/ntregistry.html das ist die wohl beste erklärung für das auslesen von einem Registrierungsschlüssel und das setzten einer umgebungsvariable. mach mal REG QUERY "HKLM\Software\Test" /v Hardware und schau dir an was zurückkommt. Tokens=2 nimmt das 2. wort Tokens=2* nimmt alles nach dem 2. Wenn du mir sagst was bei der REG QUERY zurückkommt kann ich dir besser helfen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
krümelmonster Geschrieben 18. Dezember 2008 Autor Teilen Geschrieben 18. Dezember 2008 Es kommt das richtige zurück, das habe ich schon geprüft. Folgendes bekomme ich zurück: ! REG.EXE VERSION 3.0 HKEY_LOCAL_MACHINE\Software\Test\ Hardware REG_SZ test Wenn ich den Eintrag zB auf Hugo ändere kommt Hugo raus, dürfte also passen... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
CptJack Geschrieben 18. Dezember 2008 Teilen Geschrieben 18. Dezember 2008 Da liegt auch das problem. Du kriegst vom REG QUERY ....... den string ! REG.EXE VERSION 3.0 HKEY_LOCAL_MACHINE\Software\Test\ Hardware REG_SZ test zurück. du willst aber nur Hardware REG_SZ test Wenn du den string jetzt mit den tokens im for befehl verarbeitest ist tokens = 2* ==VERSION 3.0 sprich du musst die rot geschriebene ausgabe vom reg query irgendwie unterdrücken, ich hab aber keinen plan wie das geht. ich find auf die schnelle nichts im netz und muss noch weiterarbeiten aber ich schau mal wenn ich zuhause bin. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
krümelmonster Geschrieben 19. Dezember 2008 Autor Teilen Geschrieben 19. Dezember 2008 Und hast schon nen Einfall gehabt? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.