Jump to content
Sign in to follow this  
torstenv

ASCII Ausgabe mit ECHO in Batch

Recommended Posts

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...

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...