Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
GELÖST

Woher kommen überzählige Blanks in der Ausgabedatei

Frage Entwicklung Batch & Shell

Mitglied: josken69

josken69 (Level 1) - Jetzt verbinden

11.11.2009, aktualisiert 12.11.2009, 3210 Aufrufe, 7 Kommentare

Hallo,
ich habe folgendes Script, welches eine Ursprungsdatei umwandeln soll und die Zeilen mit Blanks bis zu einer gewissen Position auffüllen soll. Dabei werden in der Ausgabedatei aber am Anfang ein Blank und am Ende 2 Blanks zuviel rausgeschrieben.
Kann mir jemand den Grund nennen?
Hier mein Script:

01.
@echo off & setlocal  
02.
Set "File=c:\Alone\input.txt" 
03.
Set "NewFile=c:\Alone\output.txt" 
04.
if exist "%NewFile%" del "%NewFile%" 
05.
set "Blanks=                                                                                                    " 
06.
for /f "usebackq delims=" %%i in ("%File%") do set "zeile=%%i%Blanks%" & call :ProcessLine  
07.
Goto :eof  
08.
:ProcessLine 
09.
Set "zeile=%zeile:&=§%"  
10.
set "zeile=%zeile:~0,128%  
11.
Set "lineOut=%zeile:§=^&%"  
12.
Echo >>"%NewFile%" %lineOut%  
13.
goto :eof

Ich häng mal zwei Screenshots der Input und output-Datei an. (Kann man hier auch files hochladen?)
8a77ece991c57feab3cc5f7144303d70-input - Klicke auf das Bild, um es zu vergrößern
76742de4129612effdb911ceb499e853-output - Klicke auf das Bild, um es zu vergrößern

Vielen Dank
Mitglied: 60730
11.11.2009 um 17:07 Uhr
Servus,

das sieht nach Biber / Bastla aus...

Aber - ob einer der beiden in Zeile 5 das " vergessen hat?

mach mal eines rein..
Gruß
Bitte warten ..
Mitglied: bastla
11.11.2009 um 17:32 Uhr
Hallo josken69!
Kann man hier auch files hochladen?
Das nicht, aber für Textdateien bietet es sich an, sie (auszugsweise) unter Vewendung der Code-Formatierung zu posten ...

Die Ausgabedatei lt Screenshot sieht ja eigentlich ganz manierlich aus - ist aber wohl der "Soll"-Zustand ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
11.11.2009 um 18:15 Uhr
Moin josken69,

mindestens eines der überzähligen Leerzeichen ist erklärlich durch den "Echo"-Befehl in Zeile 12

Und die %Blank%-Variable würde ich so umbenennen, dass (dir) beim späteren Lesen wieder einfällt, was da drin ist.

Also skizziert und ungetestet so:
01.
@echo off & setlocal  
02.
Set "File=c:\Alone\input.txt" 
03.
Set "NewFile=c:\Alone\output.txt" 
04.
if exist "%NewFile%" del "%NewFile%" 
05.
set "Blanks100=                                                                                                    " 
06.
for /f "usebackq delims=" %%i in ("%File%") do set "zeile=%%i%Blanks100%" & call :ProcessLine  
07.
Goto :eof  
08.
:ProcessLine 
09.
Set "zeile=%zeile:&=§%"  
10.
set "zeile=%zeile:~0,128%  
11.
Set "lineOut=%zeile:§=^&%"  
12.
Echo %lineOut%>>"%NewFile%" 
13.
REM Zeile 12-alt: Echo >>"%NewFile%" %lineOut%   
14.
goto :eof
[Zeile 12-alt hatte 1 Leerzeichen vor den ">>" und 2 nach %lineOut%]

Grüße
Biber
Bitte warten ..
Mitglied: josken69
12.11.2009 um 09:03 Uhr
Hallo und vielen Dank,
damit sind die überzähligen Blanks entfernt. Jetzt habe ich aber noch ein neues Problem. In der ersten Zeile wird das letzte Zeichen abgeschnitten und der CRLF kommt in Position 127. Warum passiert das denn??
Wenn ich den Wert in der Zeile Set "zeile=%zeile:~0,128% auf 129 ändere kommen alle CRLFs auf die gleiche Position, auch in Zeile 1. Und bei 128 kürzt er mir in der ersten Zeile die letzte Position weg.
Hier der Input
01.
  
02.
0128ALK3333331000000000Company & Co Name          011009    02228899000000000000               03302009                        1 
03.
0245C30070010200411440001141878000000000000005000 0000000000033333310227255700000000060273   Mustermann, Max 
04.
Company Immergleich        LEV 10.09 NR.1111.1.0001.011  0202MIETSOLL OKTOBER 2009      02FÄLLIGER BETRAG **100,73 EU 
05.
0245C30070010300101112507656700000000000000005000 0000000000033333310227255700000000042126   Musterfrau, Maxi 
06.
Company Immergleich        LEV 10.09 NR.2222.2.0002.022  0202MIETSOLL OKTOBER 2009      02FÄLLIGER BETRAG **200,26 EU 
07.
0245C30070010300101112802372300000000000000005000 0000000000033333310227255700000000081390   Schmitz, HEINZ 
08.
Company Immergleich        LEV 10.09 NR.3333.3.0003.033  0202MIETSOLL OKTOBER 2009      02FÄLLIGER BETRAG **300,90 EU 
09.
0245C30070010300209000402600286000000000000005000 0000000000033333310227255700000000002500   Meier, JOERG 
10.
Company Immergleich        LEV 10.09 NR.4444.4.0004.044  0202MIETSOLL OKTOBER 2009      02FÄLLIGER BETRAG ***25,00 EU 
11.
0245C30070010300209000602440214000000000000005000 0000000000033333310227255700000000060895   Müller, HEINZ-PETER
und hier dann der Output
01.
  
02.
0128ALK3333331000000000Company & Co Name          011009    02228899000000000000               03302009                         
03.
0245C30070010200411440001141878000000000000005000 0000000000033333310227255700000000060273   Mustermann, Max                     
04.
Company Immergleich        LEV 10.09 NR.1111.1.0001.011  0202MIETSOLL OKTOBER 2009      02FÄLLIGER BETRAG **100,73 EU            
05.
0245C30070010300101112507656700000000000000005000 0000000000033333310227255700000000042126   Musterfrau, Maxi                    
06.
Company Immergleich        LEV 10.09 NR.2222.2.0002.022  0202MIETSOLL OKTOBER 2009      02FÄLLIGER BETRAG **200,26 EU            
07.
0245C30070010300101112802372300000000000000005000 0000000000033333310227255700000000081390   Schmitz, HEINZ                      
08.
Company Immergleich        LEV 10.09 NR.3333.3.0003.033  0202MIETSOLL OKTOBER 2009      02FÄLLIGER BETRAG **300,90 EU            
09.
0245C30070010300209000402600286000000000000005000 0000000000033333310227255700000000002500   Meier, JOERG                        
10.
Company Immergleich        LEV 10.09 NR.4444.4.0004.044  0202MIETSOLL OKTOBER 2009      02FÄLLIGER BETRAG ***25,00 EU            
11.
0245C30070010300209000602440214000000000000005000 0000000000033333310227255700000000060895   Müller, HEINZ-PETER                 
12.
Company Immergleich        LEV 10.09 NR.5555.5.0005.055  0202MIETSOLL OKTOBER 2009      02FÄLLIGER BETRAG **400,95 EU            
13.
0128E     0000005000000000000000000054921601951000000038869346630000004902348                                                    
14.
 
15.
Company Immergleich        LEV 10.09 NR.5555.5.0005.055  0202MIETSOLL OKTOBER 2009      02FÄLLIGER BETRAG **400,95 EU 
16.
0128E     0000005000000000000000000054921601951000000038869346630000004902348
Bitte warten ..
Mitglied: bastla
12.11.2009 um 13:59 Uhr
Hallo josken69!

Zunächst hatte ich das "&" in Verdacht - da aber bereits vor der Rückkonvertierung von "§" nach "^&" die Länge festgelegt wird, konnte es dann doch nicht daran liegen.

Dann fiel mir aber noch die "1" unmittelbar am Ende der ersten Zeile auf - und da ">>" nur eine Kurzform der Schreibweise "1>>" darstellt (Umleitung der Ausgabe auf Kanal 1 = STDOUT), gehe ich davon aus, dass diese 1 als Bestandteil eben dieser Umleitung interpretiert wurde.

Mit der folgenden Schreibweise der Zeile 12
>>"%NewFile%" Echo %lineOut%
sollte es dann eigentlich klappen ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
12.11.2009 um 14:19 Uhr
Moin bastla,

jepp, das dürfte es sein.
Für ganz Ängstliche könnte die Zeile 12 nochmal umgestaltet werden, um auch noch trailing blanks nach %lineout% auszuschliessen:

>>"%NewFile%" (Echo %lineOut%)
[natürlich ungetestet]

Grüße
Biber
Bitte warten ..
Mitglied: josken69
13.11.2009 um 08:13 Uhr
Hallo zusammen,
jep, das war's. Ich bedanke mich herzlich und wünsche eine schönes Wochenende.
Gruß Josh
Bitte warten ..
Ähnliche Inhalte
PHP
Homepage nach PHP Update blank (4)

Frage von ric2k17 zum Thema PHP ...

Webbrowser
gelöst Woher lädt diese Seite ihren Content? (8)

Frage von Aicher1998 zum Thema Webbrowser ...

Batch & Shell
gelöst Dos-Box, seltsame(s) Zeichen - Was und woher? (6)

Frage von Franz-Josef-II zum Thema Batch & Shell ...

Server-Hardware
gelöst Wie komme ich auf das ilo? (6)

Frage von Azubine zum Thema Server-Hardware ...

Neue Wissensbeiträge
Linux Netzwerk

Ping und das einstellbare Bytepattern

(1)

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(3)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Microsoft Office
Office Druck fehler (18)

Frage von DaistwasimBusch zum Thema Microsoft Office ...

Netzwerkmanagement
Windows Server 2008 R2: "netsh reset" nicht verfügbar? (11)

Frage von RickTucker zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
Uninitialisierte Festplatte - Daten retten (11)

Frage von peterla zum Thema Festplatten, SSD, Raid ...

Microsoft Office
Outlook 2016 in Ordneransicht starten - GPO (9)

Frage von D-Line zum Thema Microsoft Office ...