Per Batch in vielen Text Dateien rechnen
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 133230
Url: https://administrator.de/contentid/133230
Ausgedruckt am: 16.11.2024 um 15:11 Uhr
6 Kommentare
Neuester Kommentar
Moin Virtu-Al,
zwei Rückfragen.
Grüße
Biber
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
Moin Virtu-Al
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
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..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, ....
Ja nee... schon klar. Allerdings muss dafür irgendein Freiwilliger in 2000 von 2000 Dateien die Zeile 5 angucken. Meldest du dich dafür?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.
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
Hallo Virtu-Al!
Vielleicht hilft aber auch dieser (als Recycling-Produkt des von Biber angesprochenen gestrigen Scripts entstandene) VBS-Ansatz bei der Entscheidungsfindung:
Grüße
bastla
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:
Folder = "D:\Ordner"
FolderDone = "D:\Ordner\bearbeitet"
Zeile = 5
Diff = -100000
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(FolderDone) Then fso.CreateFolder(FolderDone)
If Right(FolderDone, 1) <> "\" Then FolderDone = FolderDone & "\"
For Each File In fso.GetFolder(Folder).Files
If fso.GetExtensionName(File.Name) = "txt" Then
Lines = Split(File.OpenAsTextStream(1).ReadAll, vbCrLf)
Lines(Zeile - 1) = Replace(Replace(Lines(Zeile - 1), ".", ",") + Diff, ",", ".")
fso.CreateTextFile(FolderDone & File.Name).Write Join(Lines, vbCrLf)
End If
Next
bastla