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

Ausgedruckt am: 29.03.2024 um 07:03 Uhr

Mitglied: bastla
bastla 26.04.2007, aktualisiert am 18.10.2012 um 18:31:53 Uhr
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
Mitglied: bastla
bastla 26.04.2007 um 07:37:44 Uhr
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
Mitglied: Biber
Biber 26.04.2007 um 08:33:41 Uhr
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
Mitglied: miniversum
miniversum 26.04.2007 um 09:17:46 Uhr
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
Mitglied: Biber
Biber 26.04.2007 um 12:01:10 Uhr
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
Mitglied: miniversum
miniversum 26.04.2007 um 20:02:12 Uhr
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
Mitglied: bastla
bastla 26.04.2007 um 20:23:17 Uhr
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
Mitglied: IstdaseinProblem
IstdaseinProblem 26.04.2007 um 20:44:14 Uhr
Goto Top
Hallo Biber und andere,

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

Gruß,

IstdochkeinProblem
Mitglied: Biber
Biber 26.04.2007 um 22:22:59 Uhr
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
Mitglied: Ren
Ren 21.11.2008 um 15:44:09 Uhr
Goto Top
Wie wäre es mit:
set /p =wer schafft es noch kleiner<nul>datei.txt
Gruß Ren
Mitglied: Biber
Biber 21.11.2008 um 16:47:28 Uhr
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
Mitglied: Ren
Ren 22.11.2008 um 02:18:01 Uhr
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
Mitglied: Ninetonine99
Ninetonine99 30.05.2017 um 16:09:13 Uhr
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