|
Alles rund um Windows: Batch: Problem (Zeichentausch)Windows 7 Hilfe zu allen Windows-Betriebssystemen: Windows XP, Windows Vista, Windows 7, Windows 8(.1) und Windows 10 / Windows 11- als auch zu sämtlicher Windows-Software. Alles zu Windows 10 ist auch gerne willkommen. Bitte benenne etwaige Fehler oder Bluescreens unter Windows mit dem Wortlaut der Fehlermeldung und Fehlercode. Erste Schritte für Hilfe unter Windows. |
05.01.2009, 20:24 | #1 |
| Problem: Batch: Problem (Zeichentausch) Ich seh den Wald vor lauter Bäumen nicht 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:
ATTFilter systeminfo /FO CSV > %tmp%\sysinfo.log for /f %%a in ('more +2 %tmp%\sysinfo_raw.log') do ( set text=%%a set text=%text:"=#% echo %text% >> %tmp%\sysinfo_clean.log ) pause exit |
06.01.2009, 01:37 | #2 |
/// Helfer-Team | Batch: Problem (Zeichentausch) Anleitung / Hilfe 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:
ATTFilter systeminfo /FO CSV > %tmp%\sysinfo_raw.log setlocal enabledelayedexpansion for /f "tokens=*" %%a in ('more +2 %tmp%\sysinfo_raw.log') do ( set text=%%a set text=!text:"=#! echo !text! >> %tmp%\sysinfo_clean.log ) pause exit Schließlich sollte ">>" vielleicht noch durch ">" ersetzt werden, da die Ausgabedatei ansonsten bei jedem Aufruf nur verlängert wird. |
06.01.2009, 16:06 | #3 |
| Batch: Problem (Zeichentausch) Details Ehrlich kann ich darin inzwischen auch keinen Sinn mehr erkennen.
__________________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? |
07.01.2009, 12:26 | #4 | |
Gesperrt | Lösung: Batch: Problem (Zeichentausch)Zitat:
Näher lag mir zunächst, das Ersetzen einfach aus der Schleife rauszunehmen: Code:
ATTFilter for /f "tokens=*" %%a in ('more +2 %tmp%\sysinfo.log') do set text=%%a set text=%text:"=#% echo %text% >> %tmp%\sysinfo_clean.log |
Themen zu Batch: Problem (Zeichentausch) |
batch, besonders, blöd, code, datei, ersetzen, fehlermeldung, funktionier, funktioniert, inhalt, keine fehlermeldung, lauter, problem, speicher, systeminfo, tmp, zeichen, zeichentausch |