1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Zahlen hochzählen lassen per batch

Discussion in 'Programmieren' started by ov440815, Feb 19, 2013.

Thread Status:
Not open for further replies.
  1. ov440815

    ov440815 Byte

    hallo

    ich brauche eine batch datei die mir die zahlen von 00000000 - 99999999
    hochzählt und in eine txt schreibt.
    hat jemand was fertiges für mich auf die schnelle da¿
    google brachte mir keine guten ergebnisse
     
  2. kazhar

    kazhar Viertel Gigabyte

    muss es unbedingt batch sein?

    im office programm deiner wahl die zahlen von 0-99999999 erzeugen, auf 8stellig formatiern und dann copy&paste in ein textfile...
     
  3. ov440815

    ov440815 Byte

    nein muss kein batch sein.
    wie funktioniert das im office ? hab das probiert und nich hinbekommen.
     
  4. Falcon37

    Falcon37 Ganzes Gigabyte

    Nimm halt Excel, da kannst du den Zahlen-Bereich mit der Maus erstellen. ;)
     
  5. ov440815

    ov440815 Byte

    excel is gut ja. aber hast du schonmal bis 99999999 makiert ?
    das hab ich probiert. gefühlt würde es ne woche dauern
     
  6. Hallo

    Nachfolgend ein Batch. Kann aber ca. 5 Std. schätz ich mal dauern bis die Datei "h.txt" mit den Zahlen erstellt ist.


    Code:
    @echo off
    
    set a=-1
    
    :Beginn
    set /a a=%a%+1
    if %a% LSS 10 echo 0000000%a%>>h.txt
    if %a% GTR 9 if %a% LSS 100 echo 000000%a%>>h.txt
    if %a% GTR 99 if %a% LSS 1000 echo 00000%a%>>h.txt
    if %a% GTR 999 if %a% LSS 10000 echo 0000%a%>>h.txt
    if %a% GTR 9999 if %a% LSS 100000 echo 000%a%>>h.txt
    if %a% GTR 99999 if %a% LSS 1000000 echo 00%a%>>h.txt
    if %a% GTR 999999 if %a% LSS 10000000 echo 0%a%>>h.txt
    if %a% GTR 9999999 if %a% LSS 100000000 echo %a%>>h.txt
    if %a%==99999999 goto :ende
    Goto :Beginn
    
    :ende
    
    Gruß
     
  7. ov440815

    ov440815 Byte

    jaha danke silbersurfer. genau sowas hab ich gesucht
     
  8. Ich glaub ich hab mich etwas verschätzt mit der Zeit. Um den Faktor 10. wird also um einiges mehr. Da wären dann höhere Programmiersprachen gefordert, wo's schneller abläuft.

    Gruß
     
  9. ov440815

    ov440815 Byte

    ja ich merk schon.. haste das als php script auch vorliegen ¿ dann kostet es nicht so viel zeit wenn der server das tut :)
     
  10. ov440815

    ov440815 Byte

  11. Falcon37

    Falcon37 Ganzes Gigabyte

    Und wieder Excel:

    Sub Makro1()
    Range("A1:A2").Select
    Selection.AutoFill Destination:=Range("A1:A500000"), Type:=xlFillDefault
    End Sub

    So oft wie nötig ausführen, in separate Dateien abspeichern und am Schluss zusammenführen.
     
    Last edited: Feb 19, 2013
  12. ov440815

    ov440815 Byte

    kann es sein das office 2003 das nicht kann ¿ laufzeitfehler....
     
  13. kazhar

    kazhar Viertel Gigabyte

    du kannst auch das hier dem pascal compiler deiner wahl füttern
    Code:
    Program Zahl;
    
    var s: string;
        lv: longint;
    begin
         for lv:=0 to 99999999 do
         begin
              str(lv, s);
              while length(s) < 8 do
                  s:='0'+s;
              writeln(s);
         end;
    end.
    
    dauert aber immer noch knappe 10 minuten bis fertig...
     
  14. chipchap

    chipchap Ganzes Gigabyte

    Ja.
    Excel 2003 kann nur 65 536 Zeilen verwalten.
    Das
    führt zum Laufzeitfehler.
    Auch die höheren Excelversionen packen es auf herkömmliche Weise nicht:
    .
    Das ergibt als .txt eine Datei mit 100Millionen Zeilen.
    Wozu soll das dienen?
     
  15. kazhar

    kazhar Viertel Gigabyte

    naja, die datei ist genau 1.000.000.000 bytes groß und hat bei mir ca 7 1/2 minuten gebaucht zum berechnen.

    lässt sich aber gut komprimieren: sind ziemlich genau 5mb als .7z :D
     
  16. ov440815

    ov440815 Byte

    kannst du mir die schicken kazahr ¿
     
  17. kazhar

    kazhar Viertel Gigabyte

    doof gelaufen...

    ich hab die dateien nach dem proof-of-concept gelöscht.

    aber vielleicht kannst damit was anfangen: zahl.exe > zahl.txt
     

    Attached Files:

    Last edited: Feb 19, 2013
  18. root

    root Megabyte

    In C:
    Code:
    #include <stdio.h>
    
    int main()
    {
      int i;
      for (i = 0; i < 100000000; i++)
        {
          printf("%08i\n", i);
        }
    }
    
    Hat ca 30s benötigt. :)
     
  19. kazhar

    kazhar Viertel Gigabyte

    klar, pascal erzeugt immer langsameren code als c.

    dafür gibts aber auch keine buffer überläufe ;)


    edit: 2 min 10 :D
    Code:
    Program Zahl;
    
    var s, t: shortstring;
        lv: longint;
    begin
         t:='';
         for lv:=0 to 99999999 do
         begin
              if lv mod 25 = 0 then
              begin
                   write(t);
                   t:='';
              end;          
              str(lv, s);
              case s[0] of
                #1: t:=t+'0000000'+s+#13#10;
                #2: t:=t+ '000000'+s+#13#10;
                #3: t:=t+  '00000'+s+#13#10;
                #4: t:=t+   '0000'+s+#13#10;
                #5: t:=t+    '000'+s+#13#10;
                #6: t:=t+     '00'+s+#13#10;
                #7: t:=t+      '0'+s+#13#10;
              else  t:=t+          s+#13#10;
              end;
         end;
         write(t);
    end.
    
     
    Last edited: Feb 19, 2013
  20. ov440815

    ov440815 Byte

    ich hab hier free pascal.... ich bin zu blöde den code da reinzubekommen
     
Thread Status:
Not open for further replies.

Share This Page