Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Leerzeichen am Anfang einer Zeiler einer Textdatei per Batch-Datei. Wie geht das?

Frage Entwicklung Batch & Shell

Mitglied: mamahuana

mamahuana (Level 1) - Jetzt verbinden

30.12.2009 um 19:07 Uhr, 5068 Aufrufe, 13 Kommentare

Hallo zusammen,

als allererstes möchte ich ein Lob für dieses geniale Forum abgeben. Das ist heute mein erster Beitrag und ich hoffe das mir vielleicht jemand helfen kann.

Es geht um folgendes:

Ich habe eine Textdatei mit ca. 10000 Zeilen und möchte am Anfang jeder Zeile ein einfaches Leerzeichen setzen.

Wie kann ich das per Batchdatei lösen?

Wäre super, wenn mir da jemand helfen könnte.

Vielen Dank
Mitglied: rubberman
30.12.2009 um 19:21 Uhr
Hallo mamahuana,

eigentlich gar nicht so schwer. Grundsätzlich etwa so
01.
@echo off &setlocal 
02.
set Quelle=abc.txt 
03.
set Ziel=xyz.txt 
04.
 
05.
for /f "usebackq delims=" %%i in ("%Qelle") do >>"%Ziel%" echo  %%i
ABER
So wie es jetzt ist werden Leerzeilen übergangen, <>|& und % im Text führen zu Fehlern.

Gib mal etwas mehr Info zum Inhalt der Datei.

Grüße
rubberman
Bitte warten ..
Mitglied: Biber
30.12.2009 um 19:55 Uhr
Moin mamahuana,

willkommen im Forum.

Nicht, dass ich jemand den Spass am Skripten nehmen will, aber...

?? Ist es denn wirklich nötig, dieses führende Leerzeichen (mit Informationsgehalt Null) in eine Kopie der 10000-Zeilendatei zu schreiben??

Wenn es so stumpf wie geschildert einfach als jedes erstes Zeichen der Zeile auftauchen soll, dann kann doch ebensogut das "einlesende" Programm sich ein Leerzeichen dazudenken, oder?
Wie sieht denn dein eigentlicher Verarbeitungsprozess aus?

Grüße
Biber
Bitte warten ..
Mitglied: bastla
30.12.2009 um 22:12 Uhr
Hallo mamhuana und auch von mir ein Willkommen!

Ohne Bibers edukative Bemühungen unterlaufen zu wollen (und tatsächlich nur aus Freude am Scripten ):
01.
@echo off & setlocal 
02.
set "Datei=D:\Test.txt" 
03.
 
04.
set "IB=%temp%\InsertBlank.vbs" 
05.
> %IB% echo D=WScript.Arguments(0):Set fso=CreateObject("Scripting.FileSystemObject") 
06.
>>%IB% echo T=fso.OpenTextFile(D).ReadAll:fso.CreateTextFile(D).Write " "^&Replace(T,vbCrLF,vbCrLf^&" ") 
07.
 
08.
cscript //nologo %IB% "%Datei%"
Achtung: Es wird (ohne Erstellung einer Sicherungskopie) unmittelbar die Datei verändert!

Grüße
bastla
Bitte warten ..
Mitglied: Biber
30.12.2009 um 23:15 Uhr
Moin bastla,

diese Idee (mit VbSkript, .ReadAll und Replace alle CRLFs durch CRLF+Space) direkt in der Originaldatei zu erstzen hatte ich auch.
Ich habe es allerdings sofort wieder verworfen, weil ich dachte, ich hätte
  • ein Leerzeichen zuwenig in der ersten Zeile
  • dafür nach dem letzten Zeilenende ein Leerzeichen zuviel und damit eine Zeile mehr (die nicht mit CRLF endet)

Wie gehst du mit diesen Detailproblemen um?

Außerdem... das sind doch keine edukativen Bemühungen.
Ich denke nur an die armen Bätche - die haben doch auch Gefühle und machen viel lieber etwas Sinnvolles als 10000 Zeilen um ein leading blank aufzublasen.

Grüße
Biber
Bitte warten ..
Mitglied: rubberman
30.12.2009 um 23:44 Uhr
Hallo Biber,

Zitat von Biber:
Wie gehst du mit diesen Detailproblemen um?

Wie groß darf ein Array sein?

An bastlas Code anknüpfend.
01.
arrLines = Split(fso.OpenTextFile(D).ReadAlll, vbCrLf)
Beim Schreiben vor jede Zeile ein Space zu setzen sollte dann nicht das Problem sein.

Allerdings hast du mit dem Sinn oder Unsinn dieser Aktion schon Recht

Grüße
rubberman
Bitte warten ..
Mitglied: bastla
31.12.2009 um 11:55 Uhr
@Biber
  • Das Leerzeichen in der ersten Zeile wird (auch bisher schon) explizit hinzugefügt.
  • Wenn die Datei mit einem CRLF endet, enthält die Datei ja eigentlich schon eine zusätzliche Zeile (die bisher leer war) - falls diese aber tatsächlich kein Leerzeichen bekommen soll, bietet es sich an - da ein "Trim()" (oder gezielter: "RTrim()") nicht treffsicher genug ist (es könnten am Beginn der ersten bzw am Ende der letzten Zeile schon gewollte Leerzeichen existieren) - einfach den String um das (eine) von mir verbrochene letzte Zeichen gekürzt auszugeben:
01.
> %IB% echo D=WScript.Arguments(0):Set fso=CreateObject("Scripting.FileSystemObject") 
02.
>>%IB% echo T=Replace(fso.OpenTextFile(D).ReadAll,vbCrLF,vbCrLf^&" ") 
03.
>>%IB% echo fso.CreateTextFile(D).Write " "^&Left(T,Len(T)-1)
@rubberman
Natürlich auch ein Weg (und bei 10000 Zeilen sicherlich auch kein Problem mit der Größe) ...

Grüße
bastla

P.S.:
Ich denke nur an die armen Bätche
Ich doch auch, drum lass' ich die Drecksarbeit ja von einem VBScript (das dann auch noch schuld ist) machen ...
Bitte warten ..
Mitglied: rubberman
31.12.2009 um 15:38 Uhr
Hallo bastla,

Zitat von bastla:
  • Das Leerzeichen in der ersten Zeile wird (auch bisher schon) explizit hinzugefügt.

Das überrascht mich allerdings ein bisschen.

Zitat von bastla:
...drum lass' ich die Drecksarbeit ja von einem VBScript (das dann auch noch schuld ist) machen

... und ich hab mich immer schon gefragt, wozu VBScripte eigentlich gut sind

Guten Rutsch in 2010 an alle, die es lesen.

Grüße
rubberman
Bitte warten ..
Mitglied: bastla
31.12.2009 um 16:13 Uhr
Hallo rubberman!
Zitat von bastla:
  • Das Leerzeichen in der ersten Zeile wird (auch bisher schon) explizit hinzugefügt.

Das überrascht mich allerdings ein bisschen.
Inwiefern (siehe Erstfassung)?
>>%IB% echo T=fso.OpenTextFile(D).ReadAll:fso.CreateTextFile(D).Write " "^&Replace(T,vbCrLF,vbCrLf^&" ") 
                                                                       ^
Auch von mir alles Gute für 2010
bastla
Bitte warten ..
Mitglied: rubberman
31.12.2009 um 16:44 Uhr
Zitat von bastla:
Inwiefern (siehe Erstfassung)?


Ich bin mit Blindheit geschlagen, hoffentlich bessert sich das im neuen Jahr. (Allerdings nur, wenn heute Abend nicht ausgerechnet Methyl-gepanschter Fusel drunter ist )

Grüße
rubberman
Bitte warten ..
Mitglied: Biber
31.12.2009 um 19:57 Uhr
Moin bastla,

in der Tat, das Leerzeichen in der ersten Zeile habe ich einfach übersehen.
Liegt wahrscheinlich daran, dass deine Schnipsel immer so ausschweifend (manchmal über mehrere Zeilen!) lang sind.

Ich wünsche auch allen Mitlesenden alles Gute für 2010!

Grüße
Biber
Bitte warten ..
Mitglied: pieh-ejdsch
06.03.2010 um 16:42 Uhr
moin @ all,

ist zwar schon eine Weile her, dass dieser Thread hier geöffnet wurde aber ich denke die Batchlösung für dieses Problem kann ja auch hier rein.
01.
@echo off &setlocal 
02.
set Quelle=abc.txt 
03.
set Ziel=xyz.txt 
04.
 
05.
for /f "tokens=*" %%i in ('findstr /n .* "%Quelle%"') do (set "Zeile=%%i" 
06.
		setlocal enabledelayedexpansion 
07.
		set "Zeile=!Zeile:*:=!" 
08.
		(for /f %%j in ("!Zeile!") do echo. !Zeile!>>"%Ziel%"&endlocal)||endlocal 
09.
	)
sollte funktionieren ist aus der numberme ab Zeile 57

was sagt denn der Threadstarter ist der grüne Haken noch auffindbar oder brachte die bisherige Diskussion wenig Erfolg?

@rubberman bei dir fehlt das "u" in Quelle Zeile 05

Gruß Phil
Bitte warten ..
Mitglied: pieh-ejdsch
06.03.2010 um 18:03 Uhr
ach das war ebend die Version ohne Die Leerzeilen mitzunehmen aber um diese mitzunehmen ist nur Zeile 08 leicht zu verändern.

Mit LeerZeilen

01.
@echo off &setlocal 
02.
set Quelle=abc.txt 
03.
set Ziel=xyz.txt 
04.
 
05.
for /f "tokens=*" %%i in ('findstr /n .* "%Quelle%"') do (set "Zeile=%%i" 
06.
		setlocal enabledelayedexpansion 
07.
		set "Zeile=!Zeile:*:=!" 
08.
		echo. !Zeile!>>"%Ziel%"&endlocal	 
09.
	)
Gruß Phil
Bitte warten ..
Mitglied: bastla
06.03.2010 um 18:24 Uhr
@PH

Eigentlich sollte doch auch
01.
@echo off & setlocal 
02.
set Quelle=abc.txt 
03.
set Ziel=xyz.txt 
04.
 
05.
del "%Ziel%" 2>nul 
06.
for /f "tokens=1* delims=:" %%i in ('findstr /n .* "%Quelle%"') do >>"%Ziel%" echo. %%j
genügen ...

(Und natürlich gilt weiterhin, was rubberman schon eingangs erwähnte: <>|& und % im Text führen zu Fehlern.)

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Leerzeichen am Anfang und Ende löschen
gelöst Frage von Michael-24Batch & Shell17 Kommentare

Hallo zusammen, ich habe bereits einen über 4 Jahre alten Eintrag hier gefunden, was sich mit diesem Thema beschäftigt. ...

Batch & Shell
Mittels Batch jede Zeile einer Textdatei prüfen
gelöst Frage von Peter32Batch & Shell4 Kommentare

Hallo, ich habe eine Textdatei (Projekte.txt), die etwa so aufgebaut ist Nun möchte ich gerne, dass ein Batch-Script jede ...

Batch & Shell
Bestimmte Zeile einer Textdatei mit Batch auslesen
gelöst Frage von PinkFLuffyUnicornBatch & Shell2 Kommentare

Hi, ich habe ein kleines Batch Script, welches mir den Status der Firewall ausgeben soll(ob an oder aus) der ...

Batch & Shell
Textdatei Zeile für Zeile auslesen
Frage von RIPUEDBatch & Shell

Hallo, ich würde gerne mit einem Batch-Skript Zeilen aus einer Textdatei einzeln und nacheinander auslesen und diese dann nach ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 1 TagApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 1 TagWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 1 TagWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement16 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...