Zahlen aus einer .txt-Datei sortieren und erneut abspeichern
Hallo zusammen,
eine Frage an dieses Forum, weil ich so langsam verzweifle. Ich bin blutiger Anfänger und habe alles was ich bisher kann aus diesem Forum gelernt. Dafür mal herzlichen Dank.
Nun habe ich allerdings folgendes problem (bitte nicht steinigen, wenn es für Euch kein Problem darstellt):
Ich möchte eine .txt-Datei auslesen und sortiert eneut abspeichern. Meine .txt-Datei enthält nur Zahlen, die bei meiner Sortiermethode Ziffernweise sortiert werden. Ich möchte aber die komplette Zahl sortiert darstellen.
Bsp.:
Ausgangsdatei (result.txt) mit
150
150
700
90
1
8
7
wird mit meiner Batch so dargestellt/sortiert und in die Datei sort.txt geschrieben:
1
150
150
7
700
8
90
so sollte es nach meinen Vorstellungen eigentlich aussehen:
1
7
8
90
150
150
700
mein Batch sieht folgendermaßen aus:
echo off &setlocal enabledelayedexpansion
set Ziel1=result.txt
for /f "usebackq tokens=1 delims= " %%a in ("%Ziel1%") do sort "%Ziel1%" /O c:\odr\sort.txt
Worin liegt mein Fehler??
Kann mir jemand helfen? Herzlichen Dank schon mal im Voraus.
eine Frage an dieses Forum, weil ich so langsam verzweifle. Ich bin blutiger Anfänger und habe alles was ich bisher kann aus diesem Forum gelernt. Dafür mal herzlichen Dank.
Nun habe ich allerdings folgendes problem (bitte nicht steinigen, wenn es für Euch kein Problem darstellt):
Ich möchte eine .txt-Datei auslesen und sortiert eneut abspeichern. Meine .txt-Datei enthält nur Zahlen, die bei meiner Sortiermethode Ziffernweise sortiert werden. Ich möchte aber die komplette Zahl sortiert darstellen.
Bsp.:
Ausgangsdatei (result.txt) mit
150
150
700
90
1
8
7
wird mit meiner Batch so dargestellt/sortiert und in die Datei sort.txt geschrieben:
1
150
150
7
700
8
90
so sollte es nach meinen Vorstellungen eigentlich aussehen:
1
7
8
90
150
150
700
mein Batch sieht folgendermaßen aus:
echo off &setlocal enabledelayedexpansion
set Ziel1=result.txt
for /f "usebackq tokens=1 delims= " %%a in ("%Ziel1%") do sort "%Ziel1%" /O c:\odr\sort.txt
Worin liegt mein Fehler??
Kann mir jemand helfen? Herzlichen Dank schon mal im Voraus.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 133647
Url: https://administrator.de/forum/zahlen-aus-einer-txt-datei-sortieren-und-erneut-abspeichern-133647.html
Ausgedruckt am: 18.04.2025 um 15:04 Uhr
5 Kommentare
Neuester Kommentar
Hallo wemdas!
Fehler ist es eigentlich keiner - "
So sollte es aber gehen:
Die 12 Leerzeichen sind willkürlich gewählt - für Deine Testdaten hätten bereits 2 gereicht. Und nur zur Sicherheit: Dezimalzahlen mit unterschiedlicher Anzahl von Stellen hinter dem Komma lassen sich so nicht sortieren.
Grüße
bastla
Fehler ist es eigentlich keiner - "
sort
" ist einfach nur für die Verarbeitung alphanumerischer Daten gedacht ...So sollte es aber gehen:
@echo off & setlocal enabledelayedexpansion
set "Ein=result.txt"
set "Aus=c:\odr\sort.txt"
set "Blanks= "
set T=%temp%\result.tmp
del %T% 2>nul
for /f "usebackq" %%i in ("%Ein%") do (
set "Z=%Blanks%%%i"
>>%T% echo !Z:~-12%!
)
sort %T% /O %T%
del "%Aus%" 2>nul
for /f %%i in (%T%) do >>"%Aus%" echo\%%i
Grüße
bastla
Moin wemdas und bastla
hatte das ganze auch schon mal mit Schleifen gelöst.
Ist aber noch ausbaufähig und ua. anfällig bei Leerzeilen.
Grüße
rubberman
hatte das ganze auch schon mal mit Schleifen gelöst.
Ist aber noch ausbaufähig und ua. anfällig bei Leerzeilen.
@echo off &setlocal enabledelayedexpansion
set "Ein=result.txt"
set "Aus=c:\odr\sort.txt"
for /f "delims=: tokens=1*" %%i in ('findstr /n . "%Ein%"') do set /a zahl%%i=%%j &set /a n=%%i
for /l %%i in (1,1,%n%) do (
for /l %%j in (1,1,%n%) do (
if !zahl%%i! lss !zahl%%j! (
set /a temp=!zahl%%i!
set /a zahl%%i=!zahl%%j!
set /a zahl%%j=!temp!
)
)
)
type nul>"%Aus%"
for /l %%i in (1,1,%n%) do (
>>"%Aus%" echo !zahl%%i!
)
Grüße
rubberman
@rubberman
Bubblesort in Batch - das is ja mal hybsch ((c) by geTuemII) ...
Zu Leerzeilen: Derartiges fällt in meinem Ansatz oben unter "unerwünscht" und wird stillschweigend eliminiert - falls die Leerzeilen allerdings als erhaltenswert betrachtet würden, müsste ich ebenfalls die "
Ergebnis wäre, dass alle Leerzeilen natürlich an den Anfang der Datei wandern ...
Grüße
bastla
Bubblesort in Batch - das is ja mal hybsch ((c) by geTuemII) ...
Zu Leerzeilen: Derartiges fällt in meinem Ansatz oben unter "unerwünscht" und wird stillschweigend eliminiert - falls die Leerzeilen allerdings als erhaltenswert betrachtet würden, müsste ich ebenfalls die "
findstr
"-Schreibweise verwenden:@echo off & setlocal enabledelayedexpansion
set "Ein=result.txt"
set "Aus=c:\odr\sort.txt"
set "Blanks= "
set T=%temp%\result.tmp
del %T% 2>nul
for /f "delims=: tokens=1*" %%i in ('findstr /n "^" "%Ein%"') do (
set "Z=%Blanks%%%j"
>>%T% echo\!Z:~-12%!
)
sort %T% /O %T%
del "%Aus%" 2>nul
for /f "tokens=1* delims=: " %%i in ('findstr /n "^" "%T%"') do >>"%Aus%" echo\%%j
Grüße
bastla
Na wenn dem so ist - das Copyright darf ich natürlich nicht außer Kraft setzten
Kenne den Beitrag von geTuemII allerdings nicht.
Grüße
rubberman
<edit>this post was written by Miss Verständnis</edit>