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

TXT Datei verändern und neu speichern per Batch (Teil3)

Frage Entwicklung Batch & Shell

Mitglied: reinhr

reinhr (Level 1) - Jetzt verbinden

23.10.2007, aktualisiert 17:35 Uhr, 4065 Aufrufe, 2 Kommentare

Hallo Leute,

folgender Code löst unten stehendes Problem:

01.
@echo off & setlocal 
02.
set "PadTemp=%temp%\Pad.vbs" 
03.
set "Quelle=C:\Live\00000*.txt" 
04.
set "Ziel=C:\Live" 
05.
set "Neu=Neu-" 
06.
echo Breite=Array(5,5,10,5,5,5,8)>"%PadTemp%" 
07.
 
08.
echo Felder=Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0),1).ReadAll,"|")>>"%PadTemp%" 
09.
echo For i=0 To UBound(Felder):Zeile=Zeile^&Left(Trim(Felder(i))^&Space(Breite(i)),Breite(i)):Next:WScript.Echo Zeile>>"%PadTemp%" 
10.
for %%i in ("%Quelle%") do cscript //nologo "%PadTemp%" "%%i" >"%Ziel%\%Neu%%%~nxi%" 
11.
del "%PadTemp%"
Ettliche Transaktionsdateien welche täglich in ein Verzeichnis kopiert werden
(00000001.TXT bis 0000000N.TXT) haben folgenden Inhalt.

Dateiinhalt ist jeweils eine Zeile
0815|2612| 1 | 4 | 21 | 18|23.10.2007 13:40:33

nach der Konvertierung

Der Delimiter "|" wurde gelöscht und durch variable Feldbreiten ersetzt.
Das Ergebnis mit obigen Code:
0815-2612-1---------4----21---18---23.10.20
Die Bindestriche sind nur zum verdeutlichen da. In der neuen Datei sind sie nicht.

Neues Problem:
1. Problem
Der 3. Wert stellt eine Stückzahl dar. Es soll immer .00 angehängt werden.
2. Problem
Der 7. Wert stellt das Datum dar. Es soll immer im Format YYYYMMDD sein.


nach der Konvertierung sollte das Ergebnis so aussehen:
0815-2612-1.00------4----21---18---20071023
Die Bindestriche sind nur zum verdeutlichen da. In der neuen Datei sind sie nicht.


Kann mir hier jemand helfen?
Danke und Gruß

Roland
Mitglied: bastla
23.10.2007 um 17:00 Uhr
Hallo reinhr!

01.
@echo off & setlocal 
02.
set "PadTemp=%temp%\Pad.vbs" 
03.
set "Quelle=C:\Live\00000*.txt" 
04.
set "Ziel=C:\Live" 
05.
set "Neu=Neu-" 
06.
echo Breite=Array(5,5,10,5,5,5,8)>"%PadTemp%" 
07.
 
08.
echo Felder=Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0),1).ReadAll,"|")>>"%PadTemp%" 
09.
 
10.
echo Felder(2)=Trim(Felder(2))^&".00">>"%PadTemp%" 
11.
echo D=CDate(Felder(6)):Felder(6)=Year(D)^&Right("0"^&Month(D),2)^&Right("0"^&Day(D),2)>>"%PadTemp%" 
12.
 
13.
echo For i=0 To UBound(Felder):Zeile=Zeile^&Left(Trim(Felder(i))^&Space(Breite(i)),Breite(i)):Next:WScript.Echo Zeile>>"%PadTemp%" 
14.
for %%i in ("%Quelle%") do cscript //nologo "%PadTemp%" "%%i" >"%Ziel%\%Neu%%%~nxi%" 
15.
del "%PadTemp%"
Bitte beachten: Da die Zählung der Felder bei 0 beginnt, muss für die Felder 3 und 7 in den beiden neuen Zeilen jeweils "Felder(2)" und "Felder(6)" verwendet werden.

Grüße
bastla
Bitte warten ..
Mitglied: reinhr
23.10.2007 um 17:35 Uhr
Hallo Bastla,

einfach genial - da fällt mir nichts mehr ein!!!!

Vielen, vielen Dank!!

Gruß

Roland
Bitte warten ..
Ähnliche Inhalte
Neue Wissensbeiträge
Heiß diskutierte Inhalte
Windows Update
MS: Update-Server-Adressen OHNE Wildcards (16)

Frage von mrserious73 zum Thema Windows Update ...

Viren und Trojaner
Ransomware .nm4 (13)

Frage von Zyklo92 zum Thema Viren und Trojaner ...

Microsoft Office
+1.000 Ordner in Outlook: Wie besser? (11)

Frage von Matsushita zum Thema Microsoft Office ...