james2870
Goto Top

Batch: In einer txt die ersten 5 Zeilen ans Ende kopieren

Hallo an Alle!

Zuerst mal großes Kompliment an diese Seite.
Nur durch Euch bin ich erst soweit gekommen, wo ich jetzt stehe ...

Nur habe ich trotz umfangreicher Suche noch keine Lösung für mein Problem gefunden.

Folgendes:

Ich habe schon ein kleines Script (dank eurer Hilfe) geschrieben, mit welchem ich eine .txt-Datei abändere und via FTP auf einen Server lege.

Nun will ich aber vor dem FTP in dieser txt Datei mittels Batch die ersten 5 Zeilen auslesen und dann ans Ende derselben Datei kopieren. Die Anzahl der Zeilen in diesem File variiert jedoch und ist nahezu niemals die selbe.

Folgende Codeschnipsel habe ich bereits:
CMDOW @ /HIDsetlocalFOR %%i in (C:\test\*.txt) do call :loop "%%i"exit:loopset part1=%1set part2=%part1:~1,-1%set part3=%part2:~0,-4%set part4=%part3%_2.txtc:\php5\php.exe c:\test\ikea.php %part2% >%part4%move %part2% C:\test\altdaten\originalREM Hier sollen die ersten 5 Zeilen kopiert werdencopy %part4% c:\test\ftpftp -n -s:ftplogin.txt 255.255.255.255del /q c:\test\ftp\*.*move %part4% C:\test\altdaten

Nun sollen vor dem "copy %part4% ..." die ersten 5 Zeilen vom Anfang ans Ende kopiert werden.

Ist das generell möglich und könntet Ihr mir da helfen.

Ich danke schon im Voraus

lg Wolfgang

Content-Key: 48812

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

Printed on: April 23, 2024 at 15:04 o'clock

Member: miniversum
miniversum Jan 15, 2007 at 10:52:23 (UTC)
Goto Top
Versuchs mal so:

CMDOW @ /HID
setlocal enabledelayedexpansion
FOR %%i in (C:\test\*.txt) do call :loop "%%i"
exit

:loop
set zeile=1
set part1=%1
set part2=%part1:~1,-1%
set part3=%part2:~0,-4%
set part4=%part3%_2.txt

c:\php5\php.exe c:\test\ikea.php %part2% >%part4%

move %part2% C:\test\altdaten\original

REM Hier sollen die ersten 5 Zeilen kopiert werden

copy %part4% c:\test\ftp

ftp -n -s:ftplogin.txt 255.255.255.255

del /q c:\test\ftp\*.*

for /f %%i in (%part4%) do if !zeile! leq 5 echo %%i>>%part4% & set /a Zeile=!zeile!+1

move %part4% C:\test\altdaten


miniversum
Member: James2870
James2870 Jan 15, 2007 at 11:02:02 (UTC)
Goto Top
Hallo miniversum!

Vielen Dank für die rasche Antwort.

Das Ganze funktioniert auch, jedoch nicht ganz so, wie es sollte.

Die ersten 5 Zeilen werden zwar kopiert und wieder am Ende angehängt, jedoch nicht vollständig, sondern nur bis zum ersten Leerzeichen in der Zeile - dh die eingefügten Zeilen sind um einiges kürzer als die ursprünglichen.

Gibts dafür auch eine Lösung?

Danke, Wolfgang
Member: miniversum
miniversum Jan 15, 2007 at 11:05:06 (UTC)
Goto Top
Ups nicht dran gedacht. Ändere mal die For Schleife folgendermasen ab:
for /f "delims=" %%i in (%part4%) do if !zeile! leq 5 echo %%i>>%part4% & set /a Zeile=!zeile!+1

miniversum
Member: James2870
James2870 Jan 15, 2007 at 11:10:22 (UTC)
Goto Top
Super!

Vielen, vielen Dank!

Funktioniert einwandfrei!

Ihr seid doch die Besten ...

lg Wolfgang