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

Per Batch in vielen Text Dateien rechnen

Frage Entwicklung Batch & Shell

Mitglied: Virtu-Al

Virtu-Al (Level 1) - Jetzt verbinden

12.01.2010, aktualisiert 11:08 Uhr, 4348 Aufrufe, 6 Kommentare

Konstante subtrahieren

Hallo an alle Batch Profis!

Hab schon alles hier durchforstet bin aber zu schwach um vorhandene Codes zu modifizieren.
Soweit ich mitbekommen habe ist mein Problem für euch aber keines(hoffentlich).

Folgends Problem:
Ich habe ca. 2000 TXT Files die alle gleich strukturiert sind, und zwar exakt so:

0.5
-0
-0
-0.5
635000.25
289999.75

Die ersten 4 Zeilen sind überall gleich und sollen es auch bleiben, die Zeile 6 bleibt auch unverändert.
Die Zeilen 5 und 6 haben in jeder TXT Datei andere Werte, die Länge der Zahlen bleibt aber gleich.

Problemkind ist die Zeile 5, hier soll in allen TXT Dateien ein konstanter Wert subtrahiert werden(oder addiert).

Bin für jede Idee dankbar.

lg
VirtuAl
Mitglied: Biber
12.01.2010 um 11:57 Uhr
Moin Virtu-Al,

zwei Rückfragen.
  • wie /woran willst du erkennen, ob es sich bei der Zeile fünf um einen schon korrigierten/noch zu korrigierenden Wert handelt? Sollen die frisierten Dateien in einem anderen Verzeichnis und oderunter einem anderen Namen abgelegt werden? (wenn du halt vorher/nachher nur 2000 xyz-Dateien in einem Verzeichnis hast und einen Batchlauf startest, der bei Datei 666 abbricht...... da ist die Restartfähigkeit nicht hoch)
  • Wegen Wahl des Werkzeugs: "Im Batch rechnen" geht eigentlich nur mit Ganzzahlen. Daher wäre Batch ( i.S. von reine CMD-Befehle) nur sinnvoll, wenn zumindest der zu addierende Wert ganzzahlig ist. Sonst sollten wir gleich mit VBSkript/JScript starten.

Grüße
Biber
Bitte warten ..
Mitglied: Virtu-Al
12.01.2010 um 13:49 Uhr
Hi !

Sinnvoll wäre es die korrigierten Dateien in ein anderes Verzeichnis zu dulizieren, somit wäre auch klar dass diese Dateien schon korrigiert sind. Weiters wäre aufgrund des Wertes selbst klar ob eine Korrektur stattgefunden hat oder nicht.
Es werden 6-stellige Werte subtrahiert also wäre das eindeutig, außerdem würde es in der weiterführenden Verwendung der txt files sofort auffallen.
Punkto "ganzzahlig" ist das natürlich eine schlechte Nachricht, es werden zwar nur Ganzzahlen subtrahiert aber die Werte werden negativ. Also ist eine Lösung via Batch nicht möglich :/

Wäre die angesprochene VBA Lösung sehr aufwendig ?

lg und danke
VirtuAl
Bitte warten ..
Mitglied: Biber
12.01.2010 um 14:26 Uhr
Moin Virtu-Al
Zitat von Virtu-Al:
Hi !

Sinnvoll wäre es die korrigierten Dateien in ein anderes Verzeichnis zu dulizieren,
somit wäre auch klar dass diese Dateien schon korrigiert sind.
Duplizieren wäre in der Tat ein möglicher Weg..
Weiters wäre aufgrund des Wertes selbst klar ob eine Korrektur stattgefunden hat oder nicht.
Es werden 6-stellige Werte subtrahiert also wäre das eindeutig, ....
Ja nee... schon klar. Allerdings muss dafür irgendein Freiwilliger in 2000 von 2000 Dateien die Zeile 5 angucken. Meldest du dich dafür?
.... außerdem würde es in der weiterführenden Verwendung der txt files sofort auffallen.
Einer meiner ehemaligen Kollegen hatte mal einen fast gleich lautenden flapsigen Plan in der falschen Runde von sich gegeben... er war sonst sehr nett.
Punkto "ganzzahlig" ist das natürlich eine schlechte Nachricht, es werden zwar nur Ganzzahlen subtrahiert aber die Werte werden negativ.
Ganzzahlig heißt "ohne Nachkommastellen", aber durchaus auch im negativen Bereich. Kein Thema.
Also ist eine Lösung via Batch nicht möglich :/
Das hab ich nicht gesagt. Aber wenn beispielsweise jeweils 6666.33 [Einheiten] hinzu/heruntergerechnet werden müssten, per Batch aber eigentlich nur 6666 oder 6667 [Einheiten] rechenbar wären, dann wäre es albern, sowas nachzubilden.

Wäre die angesprochene VBA Lösung sehr aufwendig ?
VBS. VB-Skript, nicht VB für Applikations. Nein. Vergleichen mit einem Klassentreffen oder damit, eine 67er Import-Harley durch den Bremer TÜV zu bringen.

Ein Beispiel zum "eine Zeile pro Textdatei mit VBSkript ersetzen in zig Dateien" hatte bastla grad gestern am 11.1. sehr schön aus dem Ärmel geschüttelt.
Schau es mal bitte an.

Ansonsten hast du freie Wahl, ob Batch oder VBS. Wirf eine Münze.

Grüße
Biber
Bitte warten ..
Mitglied: TsukiSan
12.01.2010 um 15:13 Uhr
ich kann mir's nicht verkneifen, Biber, aber ich mag deine Antworten!
Aber genau so sollte Virtu-AI an seine Problematik rangehen.

Weiter so!

Gruß

Tsuki
Bitte warten ..
Mitglied: bastla
12.01.2010 um 16:26 Uhr
Hallo Virtu-Al!
Ansonsten hast du freie Wahl, ob Batch oder VBS. Wirf eine Münze.
Falls Du gerade keine Münze hast, kannst Du auch eine EC-Karte nehmen (das sollte damit sogar 2010 noch funktionieren ) ...

Vielleicht hilft aber auch dieser (als Recycling-Produkt des von Biber angesprochenen gestrigen Scripts entstandene) VBS-Ansatz bei der Entscheidungsfindung:
01.
Folder = "D:\Ordner" 
02.
FolderDone = "D:\Ordner\bearbeitet" 
03.
Zeile = 5 
04.
Diff = -100000 
05.
 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
If Not fso.FolderExists(FolderDone) Then fso.CreateFolder(FolderDone) 
08.
If Right(FolderDone, 1) <> "\" Then FolderDone = FolderDone & "\" 
09.
For Each File In fso.GetFolder(Folder).Files 
10.
    If fso.GetExtensionName(File.Name) = "txt" Then 
11.
        Lines = Split(File.OpenAsTextStream(1).ReadAll, vbCrLf) 
12.
        Lines(Zeile - 1) = Replace(Replace(Lines(Zeile - 1), ".", ",") + Diff, ",", ".") 
13.
        fso.CreateTextFile(FolderDone & File.Name).Write Join(Lines, vbCrLf) 
14.
    End If 
15.
Next
Grüße
bastla
Bitte warten ..
Mitglied: Virtu-Al
13.01.2010 um 13:38 Uhr
Zitat von Biber:

> Weiters wäre aufgrund des Wertes selbst klar ob eine Korrektur stattgefunden hat oder nicht.
> Es werden 6-stellige Werte subtrahiert also wäre das eindeutig, ....
Ja nee... schon klar. Allerdings muss dafür irgendein Freiwilliger in 2000 von 2000 Dateien die Zeile 5 angucken. Meldest du
dich dafür?
....was durch die Duplizierung entfällt

> .... außerdem würde es in der weiterführenden Verwendung der txt files sofort auffallen.
Einer meiner ehemaligen Kollegen hatte mal einen fast gleich lautenden flapsigen Plan in der falschen Runde von sich gegeben... er
war sonst sehr nett.
....ich glaube nicht dass du das beurteilen kannst ob das im weiteren Prozess auffällt...


Big thx @ bastla, funktioniert klasse so und erspart mir viel Arbeit.
Grüße
Virtu-Al
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Windows Server
Server sehr langsam bei vielen kleinen Dateien (5)

Frage von MichiBLNN zum Thema Windows Server ...

Batch & Shell
gelöst Batch die alle Dateien löscht die Älter als 3 Tage sind (5)

Frage von Azubine zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Änderungsdatum von Dateien vergleichen und ältere löschen (10)

Frage von 129528 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

DSL, VDSL
DSL-Signal bewerten (10)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...