Per Batchdatei Datei in Datei kopieren
Hallo
ich habe eine Textdatei in der sehr große Zeilen drinstehen ( eine Zeile hat 40 Kilobyte)
Diese Datei, nennen wir sie abc.txt die aktuell 1 Zeile beherbergt,
möchte ich exponentiell vergrößern und die logik in der batchfile ablegen.
Ein Beispiel:
In Datei abc.txt steht
a, b , c
Ich hätte gerne dass das Batchskript die Datei abc.txt einließt und wieder in abc.txt reinschreibt.
Dann habe ich beim ersten Durchlauf 2 zeilen, dann 4 ,dann 8 usw...bis 1 millionen
Kann mir da jemand helfen?
Gruß
Mike
ich habe eine Textdatei in der sehr große Zeilen drinstehen ( eine Zeile hat 40 Kilobyte)
Diese Datei, nennen wir sie abc.txt die aktuell 1 Zeile beherbergt,
möchte ich exponentiell vergrößern und die logik in der batchfile ablegen.
Ein Beispiel:
In Datei abc.txt steht
a, b , c
Ich hätte gerne dass das Batchskript die Datei abc.txt einließt und wieder in abc.txt reinschreibt.
Dann habe ich beim ersten Durchlauf 2 zeilen, dann 4 ,dann 8 usw...bis 1 millionen
Kann mir da jemand helfen?
Gruß
Mike
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 211234
Url: https://administrator.de/contentid/211234
Ausgedruckt am: 19.11.2024 um 11:11 Uhr
12 Kommentare
Neuester Kommentar
Hallo Mike,
Was ist der tiefere Sinn der Aktion?
Wenn es nur darum gehen sollte eine Datei mit einer bestimmten Größe zu erzeugen, dann hilft dir FSUTIL (benötigt aber Adminrechte).
... erzeugt eine Datei mit 1000 Nullzeichen (=1000 Byte Größe) auf deinem Desktop.
Grüße
rubberman
Was ist der tiefere Sinn der Aktion?
Wenn es nur darum gehen sollte eine Datei mit einer bestimmten Größe zu erzeugen, dann hilft dir FSUTIL (benötigt aber Adminrechte).
fsutil file createnew "%userprofile%\desktop\abc.txt" 1000
Grüße
rubberman
Hallo Mike,
Meine Batchdateien sind einspaltig und enthalten Programmcode
Wie sollen aus einer Zeile mit 1000 Spalten 1 Mio Datensätze werden?
Hab ich irgendwas verpasst
lg
Zitat von @Rico55:
ich möchte eine batchfile mit einer Zeile und 1000 Spalten
irgendwo ablegen und nach Bedarf soll er per klick 1000000 Datensätze draus machen
ich möchte eine batchfile mit einer Zeile und 1000 Spalten
irgendwo ablegen und nach Bedarf soll er per klick 1000000 Datensätze draus machen
Meine Batchdateien sind einspaltig und enthalten Programmcode
Wie sollen aus einer Zeile mit 1000 Spalten 1 Mio Datensätze werden?
Hab ich irgendwas verpasst
lg
Hallo Mike.
Quick'n'dirty als VBScript:
Die erste Zeile in meiner "abc.csv" sah so aus:
Grüße
rubberman
Quick'n'dirty als VBScript:
Option Explicit
Const sFilePath = "abc.csv"
Const iDataSets = 1000
Const ForWriting = 2
Dim oFSO, oFile, aFirstLine, sLine, i, iID
Set oFSO = CreateObject("Scripting.FileSystemObject")
aFirstLine = Split(oFSO.OpenTextFile(sFilePath).ReadLine, ",")
iID = CInt(Trim(aFirstLine(0)))
sLine = ""
For i = 1 To UBound(aFirstLine)
sLine = sLine & "," & aFirstLine(i)
Next
Set oFile = oFSO.OpenTextFile(sFilePath, ForWriting)
For i = 1 To iDataSets
oFile.WriteLine CStr(iID) & sLine
iID = iID + 1
Next
oFile.Close
Die erste Zeile in meiner "abc.csv" sah so aus:
0,a,b,c
Grüße
rubberman
Ich hab es mal mit
.. und mit einer Mischung aus
lg
awk
getestet:C:\TEST>awk -F, -v OFS=, "{for (i=1;i<=10^6;i++) print(i,$0)}" file.csv>test.csv
C:\TEST>dir *.csv
12.07.2013 15:40 41.003 file.csv
12.07.2013 16:08 41.009.929.900 test.csv
.. und mit einer Mischung aus
sed
und batch:C:\TEST>(for /l %a in (1,1,1000000) do @echo(%a)>numbers.csv
C:\TEST>sed "s#.*#s/.*/\&,&/#" file.csv|sed -f - numbers.csv>test.csv
C:\TEST>dir *.csv
12.07.2013 16:20 41.003 file.csv
12.07.2013 16:20 7.888.896 numbers.csv
12.07.2013 16:48 41.009.888.896 test.csv
awk
war 5 Minuten schneller, kaum zu glauben.lg
Hallo Mike,
ich weiß nicht ob dir bewusst ist, dass du Äpfel mit Birnen vergleichst.
Eine Datenbank ist ein binäres Gebilde. Dort kannst du den Speicherplatz für verschiedene Datenfelder vordefinieren. Was dann die Datenbanksoftware tut ist abhängig von der Implementation.
Beispielsweise könnte der Speicherbereich die Daten enthalten, die restlichen Bytes sind ausgenullt (mit HEX 0x00 beschrieben).
Oder ein fixer Datenbereich enthält den Wert, der Rest ist zufälliger Datenmüll. Start und Länge des eigentlichen Wertes sind adressiert.
Du möchtest aber nun mit einer CSV Datei arbeiten. CSV ist aber Plaintext, dort funktioniert das nicht! Das einzige, was du tun kannst ist Leerzeichen voran- oder nachzustellen. Stellt sich mir die Frage, welches Benefit du damit erreichst? Leerzeichen sind Zeichen, die dann zum Wert gehörig interpretiert werden und nicht etwa als "Nichts".
Was also ist das Ziel der Aktion??? Was versprichst du dir davon?
Grüße
rubberman
ich weiß nicht ob dir bewusst ist, dass du Äpfel mit Birnen vergleichst.
Eine Datenbank ist ein binäres Gebilde. Dort kannst du den Speicherplatz für verschiedene Datenfelder vordefinieren. Was dann die Datenbanksoftware tut ist abhängig von der Implementation.
Beispielsweise könnte der Speicherbereich die Daten enthalten, die restlichen Bytes sind ausgenullt (mit HEX 0x00 beschrieben).
Oder ein fixer Datenbereich enthält den Wert, der Rest ist zufälliger Datenmüll. Start und Länge des eigentlichen Wertes sind adressiert.
Du möchtest aber nun mit einer CSV Datei arbeiten. CSV ist aber Plaintext, dort funktioniert das nicht! Das einzige, was du tun kannst ist Leerzeichen voran- oder nachzustellen. Stellt sich mir die Frage, welches Benefit du damit erreichst? Leerzeichen sind Zeichen, die dann zum Wert gehörig interpretiert werden und nicht etwa als "Nichts".
Was also ist das Ziel der Aktion??? Was versprichst du dir davon?
Grüße
rubberman