Maskierung von Zeichen in DOS

Dieses Thema Maskierung von Zeichen in DOS im Forum "Webentwicklung, Hosting & Programmierung" wurde erstellt von Chris 08/15, 23. Dez. 2005.

Thema: Maskierung von Zeichen in DOS Hi! Angenommen, ich moechte in DOS eine Textzeile in eine Datei schreiben: echo Diese Zeile schreibe ich in eine...

  1. Hi!

    Angenommen, ich moechte in DOS eine Textzeile in eine Datei schreiben:
    Code:
    echo Diese Zeile schreibe ich in eine Datei! > test.txt
    Das klappt, kein Ding....d.h. Inhalt der Datei test.txt = Diese Zeile schreibe ich in eine Datei!
    Wenn ich bestimmte Zeichen wie z.B. & oder ( verwenden will, muss ich den String in Anfuehrungsstriche setzen:
    Code:
    echo Diese Zeile (schreibe) ich in eine & Datei! > text.txt
    Dann is allerdings text.txt = Diese Zeile (schreibe) ich in eine & Datei!
    D.h. die Anfuehrungsstriche werden mit in die Datei uebernommen.
    Jetzt die eigentlichen Fragen:

    1) wie kriege ich Zeichen wie & oder ( in den Text ohne dass der String dann in der Datei in gesetzt wird?

    2) wie kriege ich Stings rein, die selbst Anfuehrungsstriche enthalten?

    3) Evtl kann man dem DOS-Interpreter irgendwie sagen hoer mal, dat naechste Zeichen, dat interpretierste ma nich, dat gibste einfach ma so weiter!... gibts denn ne Maskierung in DOS?

    4) Kann ich evtl sogar die HEX-Codes der ASCII und/oder OEM-Codepage verwenden?

    Dank euch!

    Chris
     
  2. So gehts: ;)

    1 und 3)
    Code:
    echo Diese Zeile (schreibe) ich in eine ^& Datei! > text.txt
    Folgende Zeichen sollten ein  ^ vorangestellt haben, damit sie im Text erscheinen:
    &<>()@^|

    2) Folgendes gilt bei der Verwendung von :
    Quelle: cmd.exe /?

    4) Nein. Sowas kann cmd.exe bzw. command.exe nicht.

    Es gibt aber anderen Ersatz, der mehr kann.
    4DOS bzw 4NT
    Info zu 4DOS

    Oder du nimmst gleich eine von UN*X kommende Shell (Kommandozeile) wie bash oder zsh.

    Vielleicht hilft es dir ja.
     
  3. Da habe ich auch ne Frage zu, die ich schon mal stellte:

    Wie kann ich denn etwas in ein Textdokument schreiben, was
    1.) einen Pfad hat, der in gesetzt werden muss und
    2.) selber als batch funktionieren soll?

    Bsp:
    Ziel: BATCH2.BAT macht ein Textdokument BATCH3.txt

    BATCH.TXT kann man beliebig in .bat umbenennen:
    Programm: ECHO x>>Pfad.txt
    CALL y>>Pfad.txt

    BATCH2.BAT soll ein TExtdokument BATCH3.TXT erstellen,
    dass den Quellcode hat:
    ECHO x>>Pfad.txt
    CALL y>>Pfad.txt

    Meien Frage: wie bekomme ich das mit den >> hin, die ich ja wahrscheinlich
    zweimal setzen muss?
    Einmall, damit BATCH2.BAT dass in das Textdokument schreibt und einmal, damit
    der Quellcode seinen Output im Pfad.txt speichert?
     
  4. >> Das ist der Pfad.txt

    ??? Soganz habe ich aber nicht verstanden, was du machen willst!?

    Wärst du bitte so nett und würdest es bitte nochmals fü mich genauer erläutern?
     
  5. Ja, gerne.

    ECHO OFF
    CLS
    ECHO ^ECHO Hallo ^>^>Pfad >>Text.txt
    ECHO ^ECHO PAUSE ^>^>Pfad >>Text.txt
    PAUSE
    EXIT

    Das Programm schreibt nen Quelltext, der batch fähig ist,
    in den Pfad.

    Habe ich das richtig verstanden, muss ich
    eingeben?

    Also ich habe das mal ausprobiert:

    Code:
    ECHO OFF
    CLS
    ECHO ^@ECHO OFF^>^>EchoZuDateiTEST.txt >>EchoZuDateiBatch.txt
    ECHO ECHO Hallo.^>^>EchoZuDateiTEST.txt >>EchoZuDateiBatch.txt
    ECHO ECHO Datum: %date%^>^>EchoZuDateiTEST.txt >>EchoZuDateiBatch.txt
    ECHO ECHO Uhrzeit: %time%^>^>EchoZuDateiTEST.txt >>EchoZuDateiBatch.txt
    pause
    
    Das ist so meine Datei, die da oben.

    Dann kommt als Output in EchoZuDateiBatch.txt :

    Code:
    @ECHO OFF>>EchoZuDateiTEST.txt 
    ECHO Hallo.>>EchoZuDateiTEST.txt 
    ECHO Datum: Mo 02.01.2006>>EchoZuDateiTEST.txt 
    ECHO Uhrzeit: 22:14:19,85>>EchoZuDateiTEST.txt 
    
    Das ist mein gesuchtes Problem gewesen.
    Ich weiß aber wirklich nicht, was mir -ich zitiere dich, GwenDragon-
    das bringen soll:

    Bei mir wird  als Beispiel jetzt der Pfad, der in gesetzt werden muss, weil
    er Leerzeichen enthält, wirklich so kopiert nach dem obigen Beispiel.

    Es reicht, wenn ich ^>^> eingebe; der Pfad Pfad mit Leerzeichen
    ist auch in der .txt Pfad mit Leerzeichen , ohne dass ich Pfad mit Leerzeichen
    hätte so eingeben müssen.


    Das einzige, was ich jetzt mit 2* verbinde, ist der START aufruf:
    START Titel Programmpfad

    aber sonst  fällt mir nichts ein.
     
  6. Ich habe da noch eine Frage, die mir bis jetzt nicht so erklären konnte:

    Ich habe zwei batch Dateien. Der Unterschied ist die Zeichensetzung
    bei der Variablen:

    die erste:
    Code:
    ECHO OFF
    CLS
    @set V1=HAUS
    ECHO %V1%
    ECHO.
    @set V2=BRAND
    ECHO %V2%
    ECHO.
    @set V1=%V2%
    ECHO %V1%
    pause
    exit
    
    Output zur ersten batch:

    die zweite
    Code:
    ECHO OFF
    CLS
    @set V1=HAUS
    ECHO %V1%
    ECHO.
    @set V2=BRAND
    ECHO %V2%
    ECHO.
    @set %V1%=%V2%
    ECHO %V1%
    pause
    exit
    

    Output zur zweiten batch:

    Kann mir jemand irgendwas dazu sagen?
    Was ist eine Umgebungsvariable?
     
  7. hp
    hp
  8. Moin!

    Ich geh Deine Codes mal durch und schreib dahinter, was ich so denk...

    Code:
    ECHO OFF          // hoer ma auf, das was ich hier schreibe bei der Bearbeitung mit auszugeben
    CLS               // machma den Bildschirm schwarz, bevor's weitergeht
    @set V1=HAUS      // leg ma ne Variable mit dem Namen->V1' an und schreib da die 4 Buchstaben HAUS rein
    ECHO %V1%      // Geb ma den Inhalt der Variablen->V1' auf dem Bildschirm aus...aber vorher und nacher noch  setzen!
    ECHO.             // Machma ne neue Zeile
    @set V2=BRAND     // leg ma ne Variable mit dem Namen->V2' an und schreib da die 5 Buchstaben BRAND rein
    ECHO %V2%      // Geb ma den Inhalt der Variablen->V2' auf dem Bildschirm aus...aber vorher und nacher noch  setzen!
    ECHO.            // Machma ne neue Zeile
    @set V1=%V2%   // wat soll dat denn? Keine Ahnung...naja, dann zeig ich dem Kerl doch ma an, was in->V1' steht und ignorier den Rest
    ECHO %V1%     // schon wieder->V1' ausgeben? na gut...aber wieder in 
    pause            // *gääähn*
    exit              // ...ich muss weg
    
    Ich hoff dat war einigermaßen verstaendlich... Mit dem->set' machst Du ja nix anderes als wie z.B. mit->set path'...kennst Du das? Mach ma n DOS-Fenster auf und geb SET ein, dann siehst Du einige gesetzte Umgebungsvariablen, die das System an verschiedenen Stellen braucht. Du kannst auch einzelene Variablen rauspicken wie SET PATH, dann zeigt er Dir an, was alles in der Umgebungsvariablen PATH steht...
    Wenn Du schreibst SET %V1% wundert er sich natuerlich, dass es keine Umgebungsvariable HAUS gibt...mach ma im DOS-Fenster SET HAUS, dann kriegste die gleiche Fehlermeldung wie in Deiner zweiten Datei...
    Code:
    @set %V1%=%V2%
    so koenntest Du genauso schreiben
    Code:
    @set HAUS=%V2%
    dann meckert er natuerlich, dass er->HAUS' nich kennt...er kennt ja nur->V1' und->V2'....
    Mach ma die wech dann sollte dat gehen ;-) So'ne Umgebungsvariable is naemlich ganz schoen zickig, die mag keine :)

    Ich hoff, ich konnt wenigstens n bissl Licht ins Dunkel bringen...

    Greetz!

    Chris
     
  9. Danke, trotzdem für deine Hilfe, aber wie ich das richtig eingeben sollte, das wusste ich schon.
    Ich habe eben nur -weil es so spät war- versehentlich die SET variable1=Variable2
    falsch eingetragen und dann kam das eben raus.

    Trotzdem danke für deien erklärung, auch wenn ich nur wissen wollte, warum
    der das so ausgibt.

    Aber mich würde noch eins interessieren:

    Wenn ich
    Code:
    ECHO @echo %Date%^>^>Pfad.txt >>TEST.txt
    
    eingeben möchte in einer Batch, warum schreibt die batch in TEST.txt:
    ?
    Wie geht es denn, dass in der TEST.txt steht:
    Code:
    @echo %Date%>>Pfad.txt
    
    ?
     
  10. In DATE steht das aktuelle Datum ;)
    Wenn du %Date% schreibst, wird der Inhalt der Variablen von Daten ausgegeben.
    Damit keine Verwechselungen mit Windowsinternen Variablen vorkommen, verwende doch solche in der Form MY_namerdervariablen.
    Beispiel: MY_DATE anstatt DATE

    Wenn du das % mit in die Textdatei geben willst, musst du es mit ^ maskieren, also ^% schreiben.
    Code:
    ECHO @echo ^%Date^%^>^>Pfad.txt >>TEST.txt
     
Die Seite wird geladen...

Maskierung von Zeichen in DOS - Ähnliche Themen

Forum Datum
Import Datensatz inkl = und - Zeichen in Excel/Libre CALC Software: Empfehlungen, Gesuche & Problemlösungen 20. Mai 2016
Programm erkennt keine Sonderzeichen Software: Empfehlungen, Gesuche & Problemlösungen 10. Feb. 2016
Kästen, Fragezeichen usw. bei Aufruf von einigen Webseiten Web-Browser 13. Feb. 2015
Lesezeichenliste in Moziilla Firefox 35.0.1 Windows 7 Forum 1. Feb. 2015
Wie kann man das Zeichen … über die Tastatur eingeben Software: Empfehlungen, Gesuche & Problemlösungen 15. Dez. 2014