s3rb31
Goto Top

Zeile für Zeile auslesen mit funktioniert nicht nicht ....

Hallo,

also ich bin neu hier im Forum und hab eine frage die ich zuerst hier stelle da ich den Code gröstenteils von hier habe....

Nun zu meinme Problem,

Ich habe eine .txt mit insgesamt 2394 Zeilen, diese Zeilen muss ich zeile für zeile in ein Satz reinbekommen...

z.B. :
Martin feiert am "Zeile1".
Martin feiert am "Zeile2".
Martin feiert am "Zeile3".
usw....

meine Batch sieht bisher so aus:

@echo off


Set /a "cnt=1"  
Set /a "n=1"  
:A

echo %n%

for /F "Tokens=*" %%i in (Test.txt) do call :setvarFixLine %n% "%%i"   
Echo $su = "%Var%"  

set /a n+=1

if %n%==2394 goto :eof
goto A

:setvarFixLine
If %cnt%==%1 Set "Var=%~2"  
Set /a "cnt+=1"   
goto :eof

Ich denke der Code sollte sich soweit von selbst erklären wenn nicht bitte fragen.
Das problem ist nur das ich trotz "set /a n+=1" immer nur die erste Zeile ausgegeben bekomme...

Ich kann mir nicht erklären woran das liegt bitte um hilfe
Kommentar vom Moderator Biber am 01.08.2009 um 03:24:21 Uhr
Okay, gelöst ist es jetzt.
Kann aber eigentlich nicht daran liegen, dass jemand die Aufgabenstellung verstanden hat.
Ich denk noch mal in Ruhe über den passenden Bereich nach.

Content-ID: 121700

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

Ausgedruckt am: 24.11.2024 um 12:11 Uhr

bastla
bastla 30.07.2009 um 19:04:43 Uhr
Goto Top
Hallo S3RB31und willkommen im Forum!

Weshalb brauchst Du einen Zähler?

Um nur die angegebenen Ausgaben zu erzeugen, würde ja eigentlich
for /f "delims=" %i in (Test.txt) do @echo $su = %i
direkt von der Kommandozeile (oder mit %%i in einem Batch) genügen ...

Sollen es aber tatsächlich nur die ersten 2394 Zeilen sein, dann eben:
for /f "tokens=1* delims=:" %i in ('findstr /n "^" "Test.txt"') do @if %i leq 2394 @echo $su = %j
Grüße
bastla

[Edit] Der Übersicht wegen noch zwei @ eingebaut [/Edit]
S3RB31
S3RB31 30.07.2009 um 19:18:04 Uhr
Goto Top
Hmm, also dein Beispiel funktioniert leider nicht als Ausgabe bekomme ich:

"j" ist syntaktisch an dieser Stelle nicht verarbeitbar.  

Aber danke für die schnell Hilfe.
bastla
bastla 30.07.2009 um 19:23:04 Uhr
Goto Top
Hallo S3RB31!

Hatte gewohnheitsmäßig "%%i", aber dann nur "%j" geschrieben - also entweder Commandline, dann nur jeweils ein "%"-Zeichen, oder Batch, dann jeweils mit "%%" ...

Ich korrigier's oben auf "%i".

Grüße
bastla
S3RB31
S3RB31 30.07.2009 um 20:21:43 Uhr
Goto Top
Ah ok vielen Dank für die Hilfe es hat zwar nicht ganz so geklappt wie ich es gedacht hatte aber letztendlich hab ich das was ich haben wollte.

Bis dann,

S3RB31
bastla
bastla 30.07.2009 um 20:30:51 Uhr
Goto Top
Hallo S3RB31!
Ah ok vielen Dank für die Hilfe es hat zwar nicht ganz so geklappt wie ich es gedacht hatte aber letztendlich hab ich das was ich haben wollte.
Alle zukünftigen Leser dieses Threads (falls ihn Biber denn erhaltenswert finden sollte), werden sich bestimmt aufgrund Deiner aufschlussreichen Zusammenfassung mit Dir freuen ...

Grüße
bastal
S3RB31
S3RB31 30.07.2009 um 21:20:24 Uhr
Goto Top
Nun ja da gibt es nichts zusammenzufassen jeder der dein Befehl ausführt wird merken das das Command-Prompt nur 299 Zeilen ausgibt und man diese nun immer aus dem .txt file löschen muss...
bastla
bastla 30.07.2009 um 22:16:45 Uhr
Goto Top
... das das Command-Prompt nur 299 Zeilen ausgibt und man diese nun immer aus dem .txt file löschen muss...
... was aber eigentlich nur an der Textdatei liegen kann ...

Grüße
bastla
Sonnenscheinhasser
Sonnenscheinhasser 31.07.2009 um 00:14:16 Uhr
Goto Top
Warum muss es denn unbedingt per Batch sein?
Notepad++ z.B. ist sehr mächtig und hat integrierte Macrorecorderfunktionen.
Einfach die Record-Taste drücken, die gewünschte Aktion einmal ausführen und dann automatisiert bis zum Dateiende durchlaufen lassen. Easy!

Schwarze Grüße,
Tom
S3RB31
S3RB31 31.07.2009 um 01:10:29 Uhr
Goto Top
Hi,

hmm ja meinst du das würde gehn weil ich hab ja immer ein anderen Text den ich einfüen müsste...
Sonnenscheinhasser
Sonnenscheinhasser 31.07.2009 um 12:05:55 Uhr
Goto Top
Pro Zeile anders oder pro Datei?
S3RB31
S3RB31 31.07.2009 um 14:32:30 Uhr
Goto Top
Hi,

also pro Zeile ein anderer Text...
bastla
bastla 31.07.2009 um 16:21:33 Uhr
Goto Top
Hallo S3RB31!

Möchtest Du vielleicht noch einmal, möglichst konkret, beschreiben, was Du zu erreichen versuchst?

Nach den nicht allzu konkreten Hinweisen im Laufe dieses Threads könnte ich zwar vermuten, dass Du eine neue Datei erstellen willst, welche für jede Zeile (und nicht nur für eine bestimmte Anzahl davon) der alten Datei als neue Zeile
$su = "Zeileninhalt"
enthalten soll - dann könntest Du es mit folgendem Batch versuchen:
@echo off & setlocal
set "Alt=D:\Test.txt"  
set "Neu=D:\Neu.txt"  

if exist "%Neu%" del "%Neu%"  
for /f "usebackq delims=" %%i in ("%Alt%") do >>"%Neu%" echo $su = "%%i"  
Falls es das nicht sein sollte, dann bitte eine nachvollziehbare Beschreibung des gewünschten Ergebnisses (bzw Ablaufs).

Grüße
bastla
S3RB31
S3RB31 01.08.2009 um 02:26:12 Uhr
Goto Top
Hi,

also bastla dein Skript ist absolut perfekt GENAU das was ich wollte offensichtlich konntest du mich doch verstehen =D....

Vielen Dank und Grüße

S3RB31