instinctless
Goto Top

Dos batchjob zeilen und zeichen aus datei extrahieren

hallo leute, ich hab ein dringendes problem und leider nicht die nötige zeit mich in die dosshell einzuarbeiten. die lösung muss irgendwie heute auf den tisch.
ich habe gestern schon angefangen die anforderung umzusetzen, stecke aber fest was vermutlich an meinem mangelndem knowhow in sachen dos liegt.
es wäre nett wenn ihr mir helfen könntet.
Ich defiere erst einmal die anforderung und post danach das was ich bereits gebaut habe.

-- Anforderung--

C.\script.bat <N>
  1. der <N>ist eine zahl.
Lese aus einer Datei <N> Zeilen oder alle Zeilen die kleienr <N> sind aus.
Kopiere die Zeilen in eine weitere Datei. Bei erneuten Ausführen des Scripts soll diese Datei überschrieben werden.
Definiere zwei Variablen.
Var1 = die ersten 12 Zeichen der ersten Zeile aus Datei 2
Var2 = die ersten 12 Zeichen der letzten Zeile aus Datei 2
gebe Var1+Var2 auf der Konsole aus

-- Anforderung Ende --

Hier nun mein bisheriges Bastelwerk

@echo off & setlocal
set "Ein=D:\scripts\liste.txt"
set "Aus=D:\scripts\DatenNeu.txt"
set /a Anzahl=12
set "Delim="
if exist "%Aus%" del "%Aus%"
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%Ein%"') do set "Zeile=%%j" & call :ProcessFile %%i
goto :eof

:ProcessFile
set /a KeinUmbruch=%1 %% Anzahl
if %KeinUmbruch% gtr 0 (
"%Aus%" echo %Zeile%
) else (
"%Aus%" echo %Zeile%
"%Aus%" echo\
)
goto :eof

Leider tut es nicht was es soll, da es mir alle Zeilen der Datei ausgibt und nicht die angegebenen 12 face-sad
Bitte nur konstruktive Beiträge und keine Antworten wie: Nehm doch VB oder PS. Beides ist aus Sicherheitsgründen auf dem Zielsystem nicht erlaubt.
Das mit dem Umbruch ist nur zu Testzwecken eingebaut und soll nachher nicht mehr sein. Die extrahierten Zeilen sollen also umgebrochen werden.
Thanks in advance ;)

Content-ID: 160496

Url: https://administrator.de/contentid/160496

Printed on: December 13, 2024 at 11:12 o'clock

Skyemugen
Skyemugen Feb 10, 2011 at 07:48:41 (UTC)
Goto Top
Aloha,

nur schnell vor'm Frühstück noch eine Sache, damit man sich's besser ins Gehirn einbrennen kann: Codeformatierung
verwenden, das hilft doch sehr beim Betrachten und denken ;)

greetz André
60730
60730 Feb 10, 2011 at 08:21:09 (UTC)
Goto Top
moin,

umgebastelte Biber erkenn ich doch auf den ersten Blick auch ohne Code Tags...
Da wo du den her hast, war doch bestimmt auch etwas mehr dabei?

leider nicht die nötige zeit mich in die dosshell einzuarbeiten. die lösung muss irgendwie heute auf den tisch.
Bitte nur konstruktive Beiträge und keine Antworten wie:

leider tut es nicht was es soll, da es mir alle Zeilen der Datei ausgibt und nicht die angegebenen 12
  • Der einzige "Aufruf" ist doch in:
set /a Anzahl=12
Das nirgendwo weiter verwurstet ist - das Script ist ja auch für was anderes Gebastelbibert worden.

  • Solange da echo off als erster Befehl drin steht, wirst du auch nie herausfinden, was das Script macht.

Du brauchst auf was ganz anderes, einmal muß im Script %1 ausgewertet werden und dieses %1 muß dann in eine For /l Schleife das eine Findstr /n Schleife und dann ein Echo herausrückt.

Lese aus einer Datei <N> Zeilen oder alle Zeilen die kleienr <N> sind aus.
und wie soll das gesteuert werden, ob n zeilen oder alle Zeilen bis?

Sorry, aber die Zeile heute muß es auf den Tisch und ich hab keine Zeit mich in ein System einzuarbeiten, das es erst seit neunzehnundertpaarundachtzig gibt - da verliere ich die Lust face-sad


Hin und wieder kommt es vor, dass ich meinem CHef sage, das geht nicht, oder das kann ich nicht und das ist eine Charakterstärke, keine Schwäche
Kann man denn so eine Frage nicht abends stellen, wenn wir Feierabend haben und nicht dann, wenn wir selber Kohle ranschaffen müssen?


Gruß
Skyemugen
Skyemugen Feb 10, 2011 at 08:45:40 (UTC)
Goto Top
Aloha T-Mo,

umgebastelte Biber erkenn ich doch auf den ersten Blick auch ohne Code Tags...

[OT]Ja, jetzt wo du es sagst ;) - ich guck mir Codes ohne Tags schon gar nicht mehr an, weil mein Gehirn sonst auf Lesemodus statt Skriptmodus springt.
Aber ist doch schön, dass es sein bisheriges Bastelwerk ist *hust* laut seiner Aussage[/OT]

greetz André
60730
60730 Feb 10, 2011 at 08:50:05 (UTC)
Goto Top
Zitat von @Skyemugen:
Aloha T-Mo,

> umgebastelte Biber erkenn ich doch auf den ersten Blick auch ohne Code Tags...

[OT]Ja, jetzt wo du es sagst ;) - ich guck mir Codes ohne Tags schon gar nicht mehr an, weil mein Gehirn sonst auf Lesemodus statt
Skriptmodus springt.
Aber ist doch schön, dass es sein bisheriges Bastelwerk ist *hust* laut seiner Aussage[/OT]

[OT]
u.A Diese und die von mir zitierten Zeilen - auf sowas hab ich wirklich keine Lust - vielleicht kommt nachher Meister Bastla und bringt den gütigen Samariter mit, man weiß es nicht, aber was so ein paar geschriebene und ein paar ungeschriebene Zeilen so ausmachen können - das finde ich sehr interessant.
btw: Wir alle haben ja auch irgendwo das - was wir können gelernt und Fremde Federn bleiben fremde Federn
[/OT]


greetz André

retour
instinctless
instinctless Feb 10, 2011 at 08:53:06 (UTC)
Goto Top
Hallo Timo,
du sollst mir ja nicht den code vorkauen sondern mir nur bissel helfen. ich bin durchaus bereit das selbst zu erarbeiten. in der kürze der zeitlichen anforderung würde ich es ohne hilfe aber nicht schaffen.
zu erst einmal, ja ich habe mir codefragmente hier aus dem forum genommen.

das mit %1 leuchtet mir ein. weiss nicht wieso ich das gestern nicht direkt verarbeitet habe, in nem anderen beispiel habe ich bereits damit gearbeitet.
das mit den code tags bitte ich zu entschuldigen.

@andre´ ich nenne es mein bastelwerk (nicht mein code) weil teile des von mir kopierten codes aus dem forum ausgetauscht wurden. ich sehe das nicht als verwerflich.
60730
60730 Feb 10, 2011 at 09:30:11 (UTC)
Goto Top
Moin,
Zitat von @instinctless:
Hallo Timo,
du sollst mir ja nicht den code vorkauen sondern mir nur bissel helfen.

das hört sich doch ganz anders an....

Demo an der Dosbox
for /l %a in (1,1,9) do echo %aTest>>C:\script\demo2\demo2.txt
Damit hat man .- wenn man einen Ordner Script und darin einen Ordner Demo2 hat - eine Datei zum spielen.

Angenommen man will jetzt bis Zeile x alles haben - dann....
Festverdrahtet immer noch in der Dosbux...
for /f "tokens=1,* delims=:" %a in ('findstr /n "." C:\script\demo2\demo2.txt') do if %a leq 2 echo %a %b

Es soll aber nichtfestverdrahtet sein, sondern via %1
- Ich vermute - das kriegst du dann selber hin.
"&&" ist ein Biber oder ein fpschultze?, der für Befehl erfolgreich ausgeführt steht.

if "%1"=="" echo error  
echo %1 |findstr [a-z] && echo nur zahlen erlaubt

for /f "tokens=1,* delims=:" %%a in ('findstr /n "." C:\script\demo2\demo2.txt') do if %%a leq %1 echo %a %b  

pause

Ganz ohne Echo off und nur wegen der Abfrage ob und ob nicht - ein mehrzeiler - sonst killefitz...
Zu beachten - hat die Zeile selber ein : mußt du das abfangen - auch das kriegt man ganz einfach hin.

Gruß
bastla
bastla Feb 10, 2011 at 10:44:30 (UTC)
Goto Top
Hallo @all!

Wieder einmal völlig ungetestet (und unter der Annahme, dass es keine anderen Variablen gibt, deren Name mit "Var" beginnt):
@echo off & setlocal
set "Ein=D:\scripts\liste.txt"  
set "Aus=D:\scripts\DatenNeu.txt"  
set /a AnzahlZeilen=2
set /a AnzahlZeichen=12

if exist "%Aus%" del "%Aus%"  
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%Ein%"') do if %%i leq %1 (set "Zeile=%%j" & call :ProcessFile %%i)  
for /f "tokens=1* delims==" %%i in ('set Var') do echo %%j  
goto :eof

:ProcessFile
>>"%Aus%" echo\%Zeile%  
if %1 gtr %AnzahlZeilen% goto :eof
call set "Var%1=%%Zeile:~,%AnzahlZeichen%%%"  
goto :eof
Grüße
bastla
instinctless
instinctless Feb 10, 2011 at 13:30:51 (UTC)
Goto Top
danke mein held face-smile
60730
60730 Feb 10, 2011 at 14:08:43 (UTC)
Goto Top
Moin
Zitat von @instinctless:
danke mein held face-smile

Wenns der gütige Bastla mal wieer mit einem ungetesteten echo off Schnippsel geschafft hat - dann kleb doch bitte den How can I mark a post as solved? an den Fred.

@bastla: Das rafft doch wieder keiner, was du da gezimmert hast face-wink Erst als ich dein ungetestetes Schnippselchen angesehen hab, hab ich mir nochmal die Frage genauer angeschaut face-wink
Das kommt vom schlechten Kantinenkaffee face-wink

Gruß
bastla
bastla Feb 10, 2011 at 15:28:16 (UTC)
Goto Top
@t-mo

Auf vielfachen Wunsch face-wink eine kurze Erklärung (und ich fange gleich in Zeile 8 an):
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%Ein%"') do
ist ja nicht wirklich neu - es werden einfach alle Zeilen, die einen Zeilenanfang ("^") haben (und damit im Gegensatz zum Suchbegriff "." auch solche, in denen aber schon gar nix steht), nummeriert aufgelistet, wobei die Nummer von der Zeile durch einen ":" getrennt (oder auch "delimited") wird.
Da ja über den Zeileninhalt (ausnahmsweise, kommt hier im Forum ganz selten vor) nix bekannt ist, soll alles, was nach dem ersten ":" folgt, nicht weiter zerlegt werden (könnten ja noch weitere ":" enthalten sein) - deswegen nur die "tokens" 1 (=Nummer) und "*" (=der ganze Rest) erzeugen.
if %%i leq %1
Es soll ja nur eine bestimmte Anzahl von Zeilen (und die wurde als Parameter %1übergeben) in die neue Datei geschrieben werden - daher der Vergleich, ob die aktuelle Zeilennummer noch kleiner / gleich (outlandish: less or equal) der gewünschten Anzahl (ja, steht in %1) ist. Wenn dem so ist, werden die Anweisungen in der folgenden Klammer ausgeführt.
(set "Zeile=%%j" & call :ProcessFile %%i)
Die Zeile steht im zweiten erzeugten "token" (nach %%i ist das %%j) und wird aber (später) in einer eigenen Variablen benötigt und daher %Zeile% zugewiesen. Die weitere Verarbeitung erfolgt dann im Unterprogramm :ProcessFile (das hier besser :ProcessLine heißen sollte). Beim Aufruf dieses Unterprogrammes wird die laufende Nummer als Parameter mitgenommen.
for /f "tokens=1* delims==" %%i in ('set Var') do echo %%j
Wenn dann alles, was zu tun war, für alle Zeilen durch ist, können noch, wie gewünscht, die aus den ersten beiden Zeilen (siehe oben: %AnzahlZeilen%) gewonnen Informationen angezeigt werden - der Einfachheit halber, indem in einer weiteren Schleife die Auflistung aller Variablen, deren Name mit "Var" beginnt - diese erfolgt nach dem Schema
Var1=Wert der Variablen Var1
vorgenommen wird. Da nur die Werte, nicht aber die Variablennamen interessieren (habe ich zumindest angenommen), wird jede Zeile am ersten "=" geteilt und wieder nur der danach folgende Teil ausgegeben.

Damit ist der Job erledigt und das Hauptprogramm kann ein Ende finden:
goto :eof

Da war dann ja aber auch noch das Unterprogramm, das die eigentlich Arbeit erledigt (und daher natürlich als Letztes erwähnt wird face-wink):
>>"%Aus%" echo\%Zeile%
Zuerst einmal die Zeile in die neue Datei schreiben (der "\" - oft wird auch "." verwendet - sorgt dafür, das eine Leerzeile auch als solche in der Datei landet) - zur Erinnerung: Wir sind im Unterprogramm, weil noch nicht die vorgegebene Zeilenanzahl überschritten war und daher in der oberen Schleife der Aufruf erfolgte).
>if %1 gtr %AnzahlZeilen% goto :eof
Falls die Anzahl der Zeilen, für die Variablen erzeugt werden sollten, schon überschritten ist (festzustellen durch den Vergleich der übergebenen Zeilennummer, die hier im Unterprogramm als %1 - nicht zu verwechseln mit dem %1 des Hauptprogrammes - angekommen ist, mit dem in der Variablen %AnzahlZeilen% festgelegten Wert - hier: 2), gibt's nix mehr zu tun, daher Rücksprung (das ist in diesem Fall die Bedeutung des "goto :eof") ins Hauptprogramm.
>call set "Var%1=%%Zeile:~,%AnzahlZeichen%%%"
Da wir immer noch hier sind, handelt es sich bei der aktuellen Zeile offensichtlich um Zeile 1 oder 2, und von denen sollen ja die ersten 12 Zeichen (bzw, so viele, wie in %AnzahlZeichen% festgelegt wurde) in Variablen festgehalten werden. Das Erzeugen des Teilstrings kann nicht unter Verwendung einer Schleifenvariablen (zB %%j) erfolgen, weshalb oben die Zeile in der gleichnamigen Variablen gespeichert wurde. Die neue Variable soll nach der Zeilennummer (steht hier in %1) %Var1% oder %Var2% (usw, wenn es mal mehr Zeilen werden sollten) benannt werden - daher: "set Var%1="

Um aus einer Variablen (%Zeile%) eine variable Anzahl von Zeichen (%AnzahlZeichen%) herausholen zu können, würde entweder "delayedExpansion" benötigt, oder die hier verwendete "call"-Methode - aufgelöst würde dabei nach dem "=" stehen: "%Zeile:~0,12%", womit die ersten 12 Zeichen (es wird am Anfang kein einziges Zeichen übersprungen) aus %Zeile% entnommen werden.

Damit ist's aber dann wirklich genug hier, und daher wieder zurück in das Hauptprogramm ("goto :eof" ist ja jetzt schon ein alter Hut).
Ich hoffe, dass
Das rafft doch wieder keiner
jetzt nicht mehr flächendeckend zutrifft ... face-wink

Grüße
bastla
instinctless
instinctless Feb 14, 2011 at 08:46:26 (UTC)
Goto Top
hi bastla,
danke für die tolle anleitung.
so ganz steig ich da allerdings immer noch nicht hinter.
ich habe jetzt noch ne zusatzanforderung und zwar sollen die ersten 12 zeichen der ersten sowie die ersten 12 zeichen der letzen zeile hintereinander auf der console ausgegeben werden.
habe da gerade schon etwas rumprobiert aber da kommt leider nichts sinnvolles bei heraus face-sad
bastla
bastla Feb 14, 2011 at 10:58:37 (UTC)
Goto Top
Hallo instinctless!

Mit der Änderung sähe das so aus:
@echo off & setlocal
set "Ein=D:\scripts\liste.txt"  
set "Aus=D:\scripts\DatenNeu.txt"  
set /a AnzahlZeilen=1
set /a AnzahlZeichen=12

if exist "%Aus%" del "%Aus%"  
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%Ein%"') do if %%i leq %1 (set "Zeile=%%j" & call :ProcessFile %%i)  
for /f "tokens=1* delims==" %%i in ('set Var') do echo %%j  
goto :eof

:ProcessFile
>>"%Aus%" echo\%Zeile%  
call set "VarLetzte=%%Zeile:~,%AnzahlZeichen%%%"  
if %1 gtr %AnzahlZeilen% goto :eof
call set "Var%1=%%Zeile:~,%AnzahlZeichen%%%"  
goto :eof
Es wird hier in der zusätzlichen Zeile
call set "VarLetzte=%%Zeile:~,%AnzahlZeichen%%%"
ohne weitere Bedingung der Variablenwert gesetzt, sodass immer (= für alle an das Unterprogramm übergebenen Zeilen) der vorhergehende Wert überschrieben wird - am Ende steht daher der letzte Wert in der "Spezial"-Variablen (nicht mit Zeilennummer versehen).
Ansonsten: Bei Fragen: fragen face-wink

Grüße
bastla
instinctless
instinctless Feb 14, 2011 at 14:05:03 (UTC)
Goto Top
leider doch noch nicht ganz genau was ich brauche.
die als parameter "N" angegebene zahl soll in einer schleife so lange durchlaufen werden bis eof eintritt.
gibt es in dos so etwas wie

do until eof?
bastla
bastla Feb 14, 2011 at 14:12:44 (UTC)
Goto Top
Hallo instinctless!

Was genau soll dieses mehrfache Durchlaufen bewirken - sollen alle entstehenden "Blöcke" in die "DatenNeu.txt" geschrieben werden (sodass dann genau ein Vielfaches von N an Zeilen darin steht)?

Grüße
bastla
instinctless
instinctless Feb 14, 2011 at 14:18:07 (UTC)
Goto Top
Hallo bastla,
nein die Datei DatenNeu.txt soll bei jedem durchlauf überschrieben werden.
<frag mich nicht wozu das gut sein soll>
auf der console sollen dann nacheinander die ausgaben der ersten 12 zeichen von zeile 1 bis zeile N erfolgen, solange bist alle zeilen aus der eingabedatei abgearbeitet sind.
bastla
bastla Feb 14, 2011 at 14:29:39 (UTC)
Goto Top
Hallo instinctless!

Wozu das gut sein soll erschließt sich einem tatsächlich nicht auf Anhieb ... face-wink

Es bleibt aber trotzdem noch die Frage offen, was am Ende in der Datei stehen soll, wenn die Zeilenanzahl nicht restlos durch N teilbar ist?
Ich würde übrigens das zwischenzeitliche Schreiben in die Datei vermeiden und nur die entsprechenden Teilzeilen (also für zB N=10 nur die ersten 12 Zeichen der Zeilen 1, 10, 11, 20, etc) ausgeben und dann eben abschließend zB die Zeilen 141 bis 148 in die "DatenNeu.txt" schreiben ...

Grüße
bastla
instinctless
instinctless Feb 14, 2011 at 14:33:24 (UTC)
Goto Top
hi bastla,
das würde ich in der tat auch machen, ich habe es auch versucht zu erklären das es so wenig sinn macht. aber das wollten die netten herren nicht hören.
das wegen N mitunter eine nicht teilbare zahl aufkommt ist mir bewusst.
aber ist es dos nicht egal und es fallen dann einfach alle verfügbaren raus und am ende kommt ne err msg sofern man echo an hat?
ich hoffe es sind alle klarheiten beseitigt.
bastla
bastla Feb 14, 2011 at 15:01:12 (UTC)
Goto Top
Hallo instinctless!

Warum sollte eine "err msg" kommen? Es wird doch nur für die vorhandenen Zeilen geprüft, ob sie noch in das "Kontingent" fallen und daher zu schreiben sind - daher: Keine Zeilen mehr - keine Prüfung mehr (und die "endgültige" Datei umfasst dann eben soviele Zeilen, wie noch über waren) ...

"echo on" hat übrigens keinen Einfluss auf die Ausgabe von Fehlermeldungen, sondern legt nur fest, dass die Befehlszeile vor der Ausführung noch angezeigt wird (wobei die Variablen bereits durch ihren Inhalt ersetzt sind und damit der Ablauf besser nachvollziehbar wird, wenn es gerade mal nicht so tut wie soll).
Tatsächlich frage ich mich inzwischen allerdings, ob ich mich an einem Unsinn wie "Schreiben wir im Abstand von Sekunden(bruchteilen) neue Zeilen in immer die selbe Datei, auch wenn nix und niemand die dadurch überschriebenen Inhalte nachvollzieht (nachvollziehen kann)." überhaupt noch beteiligen mag ...

Grüße
bastla
bastla
bastla Feb 14, 2011 at 15:15:17 (UTC)
Goto Top
Naja, what shall's:
@echo off & setlocal
set "Ein=D:\scripts\liste.txt"  
set "Aus=D:\scripts\DatenNeu.txt"  
set /a AnzahlZeichen=12

set "N=%~1"  
if not defined N echo Keine Zeilenanzahl angegeben! & pause & goto :eof

for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%Ein%"') do (set "Zeile=%%j" & call :ProcessFile %%i)  
If %Nr% neq 0 (
    echo %Erste%
    echo %Letzte%
)
goto :eof

:ProcessFile
set /a Nr=%1 %% N
if %Nr%==1 (
    del "%Aus%" 2>nul  
    call set "Erste=%%Zeile:~,%AnzahlZeichen%%%"  
)
call set "Letzte=%%Zeile:~,%AnzahlZeichen%%%"  
if %Nr%==0 (
    echo %Erste%
    echo %Letzte%
    echo\
)
>>"%Aus%" echo\%Zeile%  
goto :eof
Furchtbar, so verspielt zu sein ...

Grüße
bastla

[Edit] Zeilen 10 bis 13 zur Ausgabe der ersten und letzten Zeile des letzten Blocks noch ergänzt. [/Edit]

[Edit2] In den Zeilen 12 und 25 %Zeile% durch %Letzte% ersetzt. [/Edit2]
instinctless
instinctless Feb 15, 2011 at 13:20:50 (UTC)
Goto Top
hi,
leider gibt das script nun nicht mehr das aus was es soll, nämlich 12 zeichen ab ^ sondern die komplette zeile.
ich habe echo %Zeile% durch %Letzte% ersetzt und nun gibt er auch die 12 Zeichen aus, allerdings kommt in beiden fällen ein weitaus größeres problem zum tragen.
in einigen zeilen steht nämlich 'Zugriff verweigert' o0
wie kommt denn sowas zustande? in der einzulesenden textdatei stehen nur zahlen.
bastla
bastla Feb 15, 2011 at 14:14:32 (UTC)
Goto Top
Hallo instinctless!
ich habe echo %Zeile% durch %Letzte% ersetzt und nun gibt er auch die 12 Zeichen aus
Richtige Korrektur face-smile (habe ich inzwischen oben auch durchgeführt)
in einigen zeilen steht nämlich 'Zugriff verweigert' o0
wie kommt denn sowas zustande? in der einzulesenden textdatei stehen nur zahlen.
Sorry - kann ich nicht nachvollziehen (ich teste allerdings mit nur wenigen Zeilen auf einem schnellen Speicher) ...

Geht es denn so (mit nur einmaligem Schreiben) besser?
@echo off & setlocal
set "Ein=D:\scripts\liste.txt"  
set "Aus=D:\scripts\DatenNeu.txt"  
set /a AnzahlZeichen=12

set "N=%~1"  
if not defined N echo Keine Zeilenanzahl angegeben! & pause & goto :eof
set /a N=N
if %N% leq 1 echo Keine sinnvolle Zeilenanzahl angegeben! & pause & goto :eof

del "%Aus%" 2>nul  
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%Ein%"') do (set "Zeile=%%j" & call :ProcessFile %%i)  

If %Nr% neq 0 (
    echo %Erste%
    echo %Letzte%
)
more +%ToSkip% "%Ein%">"%Aus%"  
goto :eof

:ProcessFile
set /a Nr=%1 %% N
if %Nr%==1 (
    call set "Erste=%%Zeile:~,%AnzahlZeichen%%%"  
    set /a ToSkip=%1-1
)
call set "Letzte=%%Zeile:~,%AnzahlZeichen%%%"  
if %Nr%==0 (
    echo %Erste%
    echo %Letzte%
    echo\
)
goto :eof
Grüße
bastla
instinctless
instinctless Feb 15, 2011 at 14:29:31 (UTC)
Goto Top
die testdaten wurden per copy/paste aus excel in notepad kopiert?
möglich das da was mit dem encoding nicht hinaut bzw. unsichtbare chars zwischen hängen?
das wäre für mich die derzeit einzige erklärung.

die letzte version läuft aber bislang ohne fehler. face-smile