Jump to content

ASCII Ausgabe mit ECHO in Batch


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Wie kann man ein ASCII Zeichen (also nicht UNICODE) ausgeben?

 

Ich hätte gerne, dass so etwas wie ein

echo " ">Leerzeichen.txt

eine Textdatei anlegt, in der ganz exakt ein Byte mit dem CHAR32 angelegt wird. Mein erstes Problem war ja schon, dass echo immer ein CRLF dranhängt. Aber selbst wenn ich das lösen würde, gibt echo immer UNICODE Zeichen aus, also eben 2 Bytes, selbst bei einem "echo Z>Z.txt". Also 2 Probleme: ohne Zeilenumbruch und ASCII statt UNICODE

 

Alternativ wäre natürlich auch eine andere Lösung interessant, die in der Lage ist, eine Datei zu erzeugen, die exakt ein Byte lang ist und meinen Wunschwert enthält...

Link zu diesem Kommentar

Moin torstenv,

 

die einzige Möglichkeit, die mir einfällt wäre:

>copy /y con z.txt
z^Z
1 Datei(en) kopiert.

(=16:34:41 D:\temp=)
>dir z.txt
Verzeichnis von D:\temp

29.02.2008 16:34 1 z.txt
[/Code]

[einzugeben am CMD-Prompt == mit ">" gekennzeichnet]

das kleine "z", dass ich in der Datei haben will OHNE CRLF danach wird dadurch sofort geschrieben, dass ich direkt nach dem "z" die Tastenkombination CTRL-Z drücken, die als Ende-der-Datei interpretiert wird.

 

Das geht IMHO nur vom CMD-Prompt aus, nicht in einer Batch.

 

Grüße

Biber

Link zu diesem Kommentar

Tja torstenv,

 

dann wirst Du wohl auf eines der Freewaretools zurückgreifen müssen, die für diesen Zweck konzipiert worden sind (echon.exe, xEcho.exe,...).

 

mit dem XEcho [http://www.arminhanisch.de/software/xecho.html] geht das z.b. so.

>xecho z /nolf>z.txt

(=18:48:37 D:\temp=)
>dir z.txt
..
Verzeichnis von D:\temp

29.02.2008 18:48 1 z.txt
[/Code]

 

Oder Du machst es mit einem temporär erstellten VBSkript aus dem Batch heraus.

Aber - die Frage sei mir gestattet -WTF treibst Du da?

 

Grüße

Biber

Link zu diesem Kommentar
dann wirst Du wohl auf eines der Freewaretools zurückgreifen müssen, die für diesen Zweck konzipiert worden sind (echon.exe, xEcho.exe,...).

Mist. Es muss irgendwie mit Bordmitteln und aus der Batch heraus möglich sein. Die CSCRIPT-Variante hatte ich auch schon überlegt, aber das ist natürlich auch nur die letzte Möglichkeit, wenn nichts Anderes mehr geht.

 

Ich hatte halt die Hoffnung, dass es die Möglichkeit geben könnte, ein echo in eine Datei zu machen und die dann wieder mittels type mit Pipe oder einem for oder etwas in der Art zu zerlegen. Eigentlich hatte ich gehofft, dass echo etwas schlauer ist, also das man z.B. das CRLF mittels Schalter unterbinden kann. Ich habe aber auch sowas von GAR KEINE Doku zu echo gefunden. Jetzt weiß ich auch warum. Es gibt nichts zu dokumentieren. echo ist strohdumm und kann schlichtweg gar nix.

 

Kanntest du XEcho schon, oder hast du das wegen meiner Nachfrage rausrecherchiert? Falls letzteres: Wonach hast du gesucht? Ich bin total verzweifelt, weil es zu echo einfach keine brauchbare Doku gab.

 

Aber - die Frage sei mir gestattet -WTF treibst Du da?

Nichts wirklich praxisrelevantes. Es geht um Proof-Of-Concept Arbeiten für Dokumentationen für Dummies. Dinge, die die Profis einfach wissen, werden oft von Entscheidern nicht verstanden und infolgedessen angezweifelt. Darum muss man Entscheidern Dinge oftmals zeigen ("Guckst du da!"), in diesem Falle die Möglichkeit, über einfache Scripte fast beliebige Dateiinhalte zu erzeugen.

Link zu diesem Kommentar

Moin torstenv,

 

das XEcho hatte ich hier schon herumliegen, und Gottseidank zeigt dieses Tool beim Aufruf mit XEcho /? auch, wo es herkommt. ich hatte es allerdings auch nur irgendwann mal zum Test heruntergeladen, aber nicht wirklich benutzt. Deshalb auch meine WTF-Frage.

Von ähnlichen Tools habe ich nur noch den Namen echoN.(com?.exe?) im Ohr, habe aber weder Ansichtsexemplar noch Quelle. Aber auch nicht gesucht.

 

Back to thread... Alternative mit Bordmitteln... hmmmmja, dann bestenfalls das Erzeugen eines temporären VBS-Oneliners, der das eben macht.

 


@echo off & setlocal
Set "tmpvb=%temp%\writeAChar.vbs"
echo WScript.StdOut.write^( WScript.Arguments^(0^)^)>%tmpvb%
cscript //nologo "%tmpvb%" z>MeineNeue1ZeichenDatei.txt
del %tmpvb"
[/Code]

 

Dieser ungetestete Schnipsel würde via temporärem VBS-Oneliner ein einzelnes Zeichen (oder auch mehrere) einlesen und rausschreiben - aber eben ohne CRLF.

 

ich habe wieder das Beispiel mit dem Zeichen "z" genommen.

Die Caret-Mimik zum Maskieren hatten wir ja schon im Parallelthread - ist hier nicht zwingend nötig, aber schadet auch nicht.

Hier ginge auch "echo WScript.StdOut.write( WScript.Arguments(0)) >%tmpvb%".

Ohne maskierung der "runden Klammern".

 

Solltest Du noch einen undokumentierten echo-Schalter finden, der uns so etwas hier erspart, dann teile es bitte allen mit.

 

Grüße

Biber

Link zu diesem Kommentar
Dieser ungetestete Schnipsel würde via temporärem VBS-Oneliner ein einzelnes Zeichen (oder auch mehrere) einlesen und rausschreiben - aber eben ohne CRLF.

 

Am Ende blieb mir nix anderes übrig, als diese VBS-Variante zu nehmen. Die bietet im Übrigen auch direkt den Vorteil, dass sie nicht UNICODE, sondern ASCII schreibt, was ja auch direkt eines meiner Bedürfnisse erfüllt.

 

Also per Umweg Ziel erreicht.

 

Thx,

T.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...