![]() |
Batch: Problem (Zeichentausch) Ich seh den Wald vor lauter Bäumen nicht :heulen: 1. Ausgabe von systeminfo in Datei umleiten. 2. Inahlt der Datei in Variable speichern 3. in der Variablen die Anführungszeichen ersetzen (mit Raute) // bis dahin funktioniert alles // 4. Inhalt der Variable in Datei schreiben (funktioniert bei mir unter gar keinen Umständen - keine Fehlermeldung, nix) Wo stell ich mich grad besonders blöd an? Code: systeminfo /FO CSV > %tmp%\sysinfo.log |
Mir ist nicht so ganz klar, wozu das gut sein soll, aber ich sehe da drei potentielle Probleme: 1. Leitest Du die Ausgabe in eine andere Datei um als Du dann zum lesen benutzt. Hab also den Dateinamen geändert. 2. Hinter "for" wird der Variablen a nur der erste Teil aus der Datei zugwiesen, und zwar bis zum ersten Leerzeichen. Hab "tokens=*" hinzugefügt. 3. Wird %text% gleich zu Anfang der Batchdatei ausgewertet, also zu einem Zeitpunkt, wo die Variable text nicht vorhanden ist. Damit wird eine leere Zeichenfolge eingesetzt. Anstelle von "%" benutze ich "!", diese Art des Variableneinsatzes bewirkt, dass erst später zur Ausführung die Variable eingesetzt wird, dann wenn sie den richtigen Wert schon hat. Da das eine Möglichkeit ist, die je nach Konfiguration nicht immer von cmd.exe genutzt werden kann, schaltet die zusätzliche Zeile "setlocal enabledelayedexpansion" diese Möglichkeit ein. Raus kommt: Code: systeminfo /FO CSV > %tmp%\sysinfo_raw.log Schließlich sollte ">>" vielleicht noch durch ">" ersetzt werden, da die Ausgabedatei ansonsten bei jedem Aufruf nur verlängert wird. |
Zitat:
Instinktiv versuche ich immer erst eine Batchdatei, bevor mir wieder siedendheiß einfällt, dass ich mit einem Powershellscript nur ein Drittel der Zeit und ein Viertel des Codes benötige (bei einigen Dingen). Diese Batch ist auf jeden Fall im Müll gelandet. Trotzdem Danke, KarlKarl. Marc PS: täuscht es oder ist die Powershell immer noch nicht sonderlich verbreitet? |
Zitat:
Näher lag mir zunächst, das Ersetzen einfach aus der Schleife rauszunehmen: Code: for /f "tokens=*" %%a in ('more +2 %tmp%\sysinfo.log') do set text=%%a |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:26 Uhr. |
Copyright ©2000-2025, Trojaner-Board