Zurück   Trojaner-Board > Web/PC > Alles rund um Windows

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.

Antwort
Alt 05.01.2009, 20:24   #1
MightyMarc
 
Batch: Problem (Zeichentausch) - Standard

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
         

Alt 06.01.2009, 01:37   #2
KarlKarl
/// Helfer-Team
 
Batch: Problem (Zeichentausch) - Standard

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
         
Und das erzeugt bei mir eine Ausgabe, von der ich mir vorstellen kann, dass sie gemeint sein könnte.

Schließlich sollte ">>" vielleicht noch durch ">" ersetzt werden, da die Ausgabedatei ansonsten bei jedem Aufruf nur verlängert wird.
__________________


Alt 06.01.2009, 16:06   #3
MightyMarc
 
Batch: Problem (Zeichentausch) - Standard

Batch: Problem (Zeichentausch) Details



Zitat:
Zitat von KarlKarl Beitrag anzeigen
Mir ist nicht so ganz klar, wozu das gut sein soll,...
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?
__________________

Alt 07.01.2009, 12:26   #4
putty
Gesperrt
 
Batch: Problem (Zeichentausch) - Standard

Lösung: Batch: Problem (Zeichentausch)



Zitat:
Zitat von KarlKarl Beitrag anzeigen
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
Danke für diesen interessanten Hinweis! Die Möglickeit, Variablen in !...! zu packen, war mir bisher unbekannt.

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
         

Antwort

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




Ähnliche Themen: Batch: Problem (Zeichentausch)


  1. Killscript mit batch?
    Alles rund um Windows - 05.08.2016 (15)
  2. Batch zu DLL konvertieren
    Alles rund um Windows - 05.08.2016 (26)
  3. Batch Datei kontrollieren
    Alles rund um Windows - 23.01.2011 (2)
  4. Batch Datei auf XP
    Alles rund um Windows - 19.05.2010 (22)
  5. Prozessabfrage via Batch?
    Alles rund um Windows - 26.01.2010 (5)
  6. Lan-Ordner via Batch öffnen?!
    Alles rund um Windows - 17.02.2009 (1)
  7. Batch problem (for)
    Alles rund um Windows - 05.01.2009 (8)
  8. (Batch) Errorlevel auf 0 setzen
    Alles rund um Windows - 13.12.2008 (4)
  9. Netzlaufwerk via Batch einbinden
    Alles rund um Windows - 01.12.2008 (1)
  10. Mal wieder Batch :D
    Alles rund um Windows - 08.10.2008 (2)
  11. PC per batch herunterfahren?
    Alles rund um Windows - 07.09.2008 (23)
  12. escan-batch
    Antiviren-, Firewall- und andere Schutzprogramme - 26.01.2008 (9)
  13. Batch? Freiwillige vor
    Alles rund um Windows - 11.01.2008 (24)

Zum Thema 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 - Batch: Problem (Zeichentausch)...
Archiv
Du betrachtest: Batch: Problem (Zeichentausch) auf Trojaner-Board

Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.