istdaseinproblem
Goto Top

Textdatei ohne abschließenden Zeilenumbruch erstellen

Ich möchte aus einer Batchdatei heraus eine Textdatei mit dem Windows Loginnamen erstellen, z.B. mit echo %username%>datei.txt.
Das Problem ist, dass die Textdatei dann immer mit einem Zeilenumbruch endet.
Die Textdatei wird anschließend von einer Software ausgelesen, ein Zeilenumbruch darin ist nicht zulässig.
Gibt es eine Möglichkeit, den Zeilenumbruch zu verhindern (nur per Batch)?

Danke für die Hilfe.

Content-Key: 57620

Url: https://administrator.de/contentid/57620

Printed on: April 18, 2024 at 23:04 o'clock

Member: bastla
bastla Apr 26, 2007, updated at Oct 18, 2012 at 16:31:53 (UTC)
Goto Top
Hallo IstdaseinProblem und willkommen im Forum!

Gibt es eine Möglichkeit, den Zeilenumbruch zu verhindern (nur per Batch)?
Ich fürchte, es hat sich seither nichts geändert ...

Grüße
bastla
Member: bastla
bastla Apr 26, 2007 at 05:37:44 (UTC)
Goto Top
... soferne VBS eine Option wäre, sollte die folgende Batchdatei genügen:
@echo off & setlocal
set "Ausgabedatei=D:\Test.txt"  
set "VBSTemp=%temp%\GetUserName.vbs"  
echo Set fsotxt = CreateObject("Scripting.FileSystemObject").OpenTextFile("%Ausgabedatei%", 2, 1)>"%VBSTemp%"  
echo fsotxt.Write WScript.CreateObject("WScript.Network").UserName>>"%VBSTemp%"  
echo fsotxt.Close>>"%VBSTemp%"  
cscript //nologo "%VBSTemp%"  
del "%VBSTemp%"  
Anmerkung: Die Batchdatei erstellt (und löscht wieder) eine temporäre VBS-Datei, welche das Auslesen und Schreiben des "Username" durchführt. Zu ändern wäre nur der Name/Pfad der Ausgabedatei.

Grüße
bastla
Member: Biber
Biber Apr 26, 2007 at 06:33:41 (UTC)
Goto Top
Moin IstdaseinProblem,

willkommen im Forum.

Du kommst gerade richtig, gerade letzte Woche habe ich ein undokumentiertes Feature für ein "ECHO ohne Zeilenumbruch" gefunden.
Syntax-Demo:
>echo.|set /p=xxx>ohneCRLF.txt

(= 8:31:36  D:\temp=)
>echo.|set /p=>>ohneCRLF.txt

(= 8:31:49  D:\temp=)
>echo.|set /p=zzz>>ohneCRLF.txt

(= 8:32:02  D:\temp=)
>type ohneCRLF.txt
xxx  zzz
(= 8:32:05  D:\temp=)
Im Batch:
echo.|set /p=%username%>datei.txt

Gruss
Biber
Member: miniversum
miniversum Apr 26, 2007 at 07:17:46 (UTC)
Goto Top
Das ist ja mal geil
Wenn du mir jetzt noch zeigst wie man die Leerstelle am Ende wegbekommt wärs ja past perfekt :D

miniversum
Member: Biber
Biber Apr 26, 2007 at 10:01:10 (UTC)
Goto Top
Na gerne, miniversum,

dazu muss ich noch einen kleinen Umweg machen.
::---snipp NoLFEcho,bat
@echo off & setlocal
Set Ret=%temp%\ret
echo.>%ret%
set/p=MfG Biber, <%ret%>NoCRLF.txt
set/p=der ohne Leerzeichen und Zeilenumbruch in eine Text<%ret%>>NoCRLF.txt
REM Hier könnten jetzt 48 Batchzeilen mit Programmlogik folgen...
REM ...mach mir die Datensicherung z.B...
REM ...und  irgendwann später kann ich in derselben Textzeile weiterschreiben..
REM Wäre ein nettes Feature in einer Logdatei mit "Start Backup 11:44 Ende 12:37"   
REM ..hoffe, es ist verständlich...
set/p=datei schreiben kann<%ret%>>NoCRLF.txt

set /p test=<NoCRLF.txt
echo [%test%]
Del %ret%
::Snapp NoLFEcho.bat
Output ist:
[MfG Biber, der ohne Leerzeichen und Zeilenumbruch in eine Textdatei schreiben kann]

Grüsse
Biber
Member: miniversum
miniversum Apr 26, 2007 at 18:02:12 (UTC)
Goto Top
Ist so ungewohnt von dir so lange Sachen zu lesen face-smile
@echo off
echo.>%temp%\tmp
set/p=Mfg miniversum face-smile<%temp%\tmp>>NoCRLF.txt
del %temp%\tmp

miniversum
Member: bastla
bastla Apr 26, 2007 at 18:23:17 (UTC)
Goto Top
... wobei nach meiner Überschlagsrechnung Biber mit seiner Variante schon ab dem zweiten "Nicht-Zeilenumbruch" insgesamt weniger (wenn auch recyclebare face-wink) Bytes benötigt ...

Grüße
bastla
Member: IstdaseinProblem
IstdaseinProblem Apr 26, 2007 at 18:44:14 (UTC)
Goto Top
Hallo Biber und andere,

vielen Dank für die Antworten, hat mir sehr weitergeholfen.

Gruß,

IstdochkeinProblem
Member: Biber
Biber Apr 26, 2007 at 20:22:59 (UTC)
Goto Top
@miniversum
Ist so ungewohnt von dir so lange Sachen zu lesen
Och, ich kann mich auch kürzer fassen:
::---snipp MoreNoLFEcho.bat
@(echo.>%temp%\ret && For /L %%i in (1,1,200) do @set/p=MfG Biber ~~~<%temp%\ret>>con) & del %temp%\ret

@istdochkeinproblem
Setzt Du dann bitte den Beitrag auf "gelöst", wenn er das für Dich ist?

Danke
Biber
Member: Ren
Ren Nov 21, 2008 at 14:44:09 (UTC)
Goto Top
Wie wäre es mit:
set /p =wer schafft es noch kleiner<nul>datei.txt
Gruß Ren
Member: Biber
Biber Nov 21, 2008 at 15:47:28 (UTC)
Goto Top
Moin Ren,

danke für Deine Variante.
(=16:45:41  E:\Schnipsel\RenBsp=)
>for /L %i in (1,1,4) do @set /p =wer schafft es noch kleiner<nul
wer schafft es noch kleinerwer schafft es noch kleinerwer schafft es noch kleinerwer schafft es noch kleiner
(=16:45:45  E:\Schnipsel\RenBsp=)
>for /L %i in (1,1,4) do @echo.|set /p= ich ;-)
 ich ;-) ich ;-) ich ;-) ich ;-)
(=16:46:06  E:\Schnipsel\RenBsp=)

Grüße
Biber
Member: Ren
Ren Nov 22, 2008 at 01:18:01 (UTC)
Goto Top
verzähle ich mich da, oder hast du einen Zeichen Funktionscode mehr als ich? ;)
for /L %i in (1,1,4) do @set /p = doch nicht ;-) <nul
for /L %i in (1,1,4) do @echo.|set /p= doch nicht ;-) 
Gut, so sieht man es nicht, weil die letzte Leertaste des Textes im unteren Beispiel nicht sichtbar ist. Egal, aber ich meine, am Text sparen, dass kann ja jeder:
Hier z.B. ein "Schnecken-CLS", wer es braucht...
for /L %i in (1,1,2000) do @set /p = <nul
Und wenn wir schon bei einer minimalen Version sind:
for /L %i in (1,1,2000) do @set/p= <nul
Gruß ins Wochenende
Member: Ninetonine99
Ninetonine99 May 30, 2017 at 14:09:13 (UTC)
Goto Top
Hallo Biber,
ich habe grade deine Metothe ausprobiert, aber dann bekam ich in der Datei statt 0, was ich angegeben hab, absolut nichts.
Kannst du mir vielleicht helfen?

LG Nine