Per Batch 1. Zeile einer .txt auf bestimmten PC auslesen
Moin, moin,
ich habe folgendes Problemchen: Ich möchte die erste Zeile einer bestimmten .txt-Datei im Pfad c:\Programme\ProgrammX\text.txt auslesen.
Ich scheitere allerdings schon bei der 1. Zeile:
liest leider die ganze File ein.
Ist allerdings das kleinere Problem. Das eigentliche Problem ist, dass das nicht lokal auf meinem Rechner ausgeführt werden soll, sondern auf
bestimmten Rechnern bei uns in der Firma. Irgendwo habe ich mal gelesen, dass man keine doppelte IF-Anweisung, also in sich verschachtelt,
durchführen kann.
Mit und dann die anweisung von oben in den klammern funktioniert es leider nicht.
Wie kann ich mein Problemchen lösen?
ich habe folgendes Problemchen: Ich möchte die erste Zeile einer bestimmten .txt-Datei im Pfad c:\Programme\ProgrammX\text.txt auslesen.
Ich scheitere allerdings schon bei der 1. Zeile:
for /F "delims=;" %%i in (C:\Programme\fawbsh\LOGMSG.TXT) do echo %%i>>ausgabe.txt
liest leider die ganze File ein.
Ist allerdings das kleinere Problem. Das eigentliche Problem ist, dass das nicht lokal auf meinem Rechner ausgeführt werden soll, sondern auf
bestimmten Rechnern bei uns in der Firma. Irgendwo habe ich mal gelesen, dass man keine doppelte IF-Anweisung, also in sich verschachtelt,
durchführen kann.
Mit
For /F %%a in (liste.txt) DO (
Wie kann ich mein Problemchen lösen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 25.05.2010 um 16:25:00 Uhr
Verschoben nach "Batch & Shell" von "Entwicklung".
Content-ID: 143494
Url: https://administrator.de/contentid/143494
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
6 Kommentare
Neuester Kommentar
Salü,
Wie das genau funktioniert?
Einfach mal findstr /? aufrufen und sich den Sinn von /C /B /N ansehen.
Das erste "." ist der sonst übliche Platzhalter (*)
Gruß
edit:
das ist quark...
Ein ganz simples Beispiel...
findstr /n "." "C:\Programme\fawbsh\LOGMSG.TXT" |findstr /b /c "1:">ausgabe.txt
Wie das genau funktioniert?
Einfach mal findstr /? aufrufen und sich den Sinn von /C /B /N ansehen.
Das erste "." ist der sonst übliche Platzhalter (*)
Gruß
edit:
Irgendwo habe ich mal gelesen, dass man keine doppelte IF-Anweisung, also in sich verschachtelt, durchführen kann.
das ist quark...
Ein ganz simples Beispiel...
if exist c:\ echo c ist da
if exist c:\ if exist d:\ echo c und d sind da
Hallo Scratch!
Ich sehe auch noch keine Notwendigkeit für auch nur ein "
... aber zur eigentlichen Frage: Am einfachsten kommst Du zur ersten Zeile einer Datei über:
[Edit]
Wenn es tatsächlich darum gehen sollte, aus mehreren Dateien jeweils nur die erste Zeile in eine neue Datei zu schreiben, würde ich das allerdings eher so versuchen:
[/Edit]
Grüße
bastla
Ich sehe auch noch keine Notwendigkeit für auch nur ein "
if
" - aber vermutlich ist ohnehin das Verschachteln von "for
"-Schleifen gemeint, was ganz nebenbei auch kein Problem ist ...... aber zur eigentlichen Frage: Am einfachsten kommst Du zur ersten Zeile einer Datei über:
set /p ErsteZeile=<Datei.txt
Wenn es tatsächlich darum gehen sollte, aus mehreren Dateien jeweils nur die erste Zeile in eine neue Datei zu schreiben, würde ich das allerdings eher so versuchen:
for /f %%a in (liste.txt) do (
set "Erste=True"
for /f "usebackq delims=" %%i in ("%%a") do (
if defined Erste >>ausgabe.txt echo %%i
set "Erste="
)
)
Grüße
bastla
Hallo Scratch!
Grüße
bastla
Warum genau definierst du eigentlich die Variable?
Eine "for /f
"-Schleife geht immer alle Zeilen der Datei durch - um nur die erste auch in die Ausgabedatei zu schreiben, verwende ich die Variable %Erste% als Schalter (der sich am einfachsten hinsichtlich Existenz abfragen lässt - es ist daher egal, welcher Text in Zeile 2 zugewiesen wird; wichtig ist nur, dass in Zeile 5 die Variable für diese Datei wieder gelöscht wird, sodass eben nur die eine Zeile geschrieben wird).Grüße
bastla