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, 3192 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 ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Lizenzierung
gelöst Woher bekomme ich die "Advanced ID" eines Product Keys ? (23)

Frage von aicher zum Thema Lizenzierung ...

Netzwerkprotokolle
gelöst Kurze Frage: AnyConnect woher beziehen? (8)

Frage von PharIT zum Thema Netzwerkprotokolle ...

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

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

Windows Server
gelöst GPO - woher nehmt Ihr Euer Wissen? (12)

Frage von PharIT zum Thema Windows Server ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...